summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper
diff options
context:
space:
mode:
authorJonathan Bauer2018-11-27 17:45:34 +0100
committerJonathan Bauer2018-11-27 17:45:34 +0100
commit5674f7e63f599ae71d54e50c1bdb53ef11b4d186 (patch)
treed83b58530e9ec9181c9f479d555596b753d2ce45 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper
parent[client] fill new form fields on netshare selection (diff)
downloadtutor-module-5674f7e63f599ae71d54e50c1bdb53ef11b4d186.tar.gz
tutor-module-5674f7e63f599ae71d54e50c1bdb53ef11b4d186.tar.xz
tutor-module-5674f7e63f599ae71d54e50c1bdb53ef11b4d186.zip
[client] allow user to choose how long an image is to be extended for
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ExpiryDateChooser.java97
1 files changed, 97 insertions, 0 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ExpiryDateChooser.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ExpiryDateChooser.java
new file mode 100644
index 00000000..a4810d24
--- /dev/null
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ExpiryDateChooser.java
@@ -0,0 +1,97 @@
+package org.openslx.dozmod.gui.helper;
+
+import java.awt.Component;
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.swing.Box;
+import javax.swing.DefaultBoundedRangeModel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JSlider;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import org.apache.log4j.Logger;
+import org.openslx.dozmod.gui.control.QLabel;
+import org.openslx.dozmod.thrift.Session;
+import org.openslx.dozmod.util.FormatHelper;
+
+public class ExpiryDateChooser {
+
+ private static final Logger LOGGER = Logger.getLogger(ExpiryDateChooser.class);
+
+ public final static int DEFAULT_EXTENSION_DURATION = 14;
+
+ private final static JPanel pane = new JPanel();
+ private final static GridManager grdPane = new GridManager(pane, 3, true);
+ private final static JSlider sldDaysToExtend = new JSlider(JSlider.HORIZONTAL);
+ private final static QLabel lblNewDate = new QLabel();
+ private final static QLabel lblNewDateLabel = new QLabel();
+ private final static String txtNewDateLevel = "Neues Ablaufdatum: ";
+ static {
+ grdPane.add(new QLabel("Geben Sie ein um wieviele Tage diese Version(en) verlängert werden soll:"), 3)
+ .fill(true, true)
+ .expand(true, true);
+ grdPane.nextRow();
+
+ sldDaysToExtend.setModel(new DefaultBoundedRangeModel(DEFAULT_EXTENSION_DURATION, 0, 1,
+ Session.getSatelliteConfig().maxImageValidityDays));
+ grdPane.add(sldDaysToExtend, 3).fill(true, false).expand(true, false);
+ grdPane.nextRow();
+
+ grdPane.add(lblNewDateLabel);
+ grdPane.add(Box.createGlue()).fill(true, false).expand(true, false);
+ grdPane.add(lblNewDate).fill(true, true).expand(true, true);
+ grdPane.finish(true);
+ }
+
+ /**
+ * Helper to ask the user for the number of days to extend a date with. If
+ * startingDate is given, it will preview the starting date + selected
+ * number of days. If startingDate is null, no preview will be done.
+ * Returns the numbers of days selected.
+ *
+ * @param parent component to center the dialog on.
+ * @param starting date to add the user selected duration on to. Only needed
+ * for live preview of the future date.
+ * @return the number of days the user selected.
+ */
+ public static int askFutureExpiryDate(final Component parent, final Date startingDate) {
+ final Calendar startingDayMidnight = Calendar.getInstance();
+ if (startingDate != null) {
+ startingDayMidnight.setTime(startingDate);
+ startingDayMidnight.set(Calendar.HOUR_OF_DAY, 23);
+ startingDayMidnight.set(Calendar.MINUTE, 59);
+ startingDayMidnight.set(Calendar.SECOND, 59);
+ lblNewDate.setText(FormatHelper.longDate(
+ DateTimeHelper.addDaysTo(startingDayMidnight.getTime(), DEFAULT_EXTENSION_DURATION)));
+ lblNewDateLabel.setText(txtNewDateLevel);
+ }
+ sldDaysToExtend.setValue(DEFAULT_EXTENSION_DURATION);
+ sldDaysToExtend.addChangeListener(new ChangeListener() {
+ @Override
+ public void stateChanged(ChangeEvent e) {
+ if (startingDate != null) {
+ Date newExpiryDate = DateTimeHelper.addDaysTo(startingDayMidnight.getTime(),
+ sldDaysToExtend.getValue());
+ lblNewDate.setText(FormatHelper.longDate(newExpiryDate));
+ }
+ }
+ });
+
+ int ret = JOptionPane.showConfirmDialog(parent, pane, "Ablaufdatum verlängern",
+ JOptionPane.OK_CANCEL_OPTION);
+ if (ret != 0) {
+ LOGGER.info("Canceled by user.");
+ return -1;
+ }
+ if (sldDaysToExtend.getValue() <= 0
+ || sldDaysToExtend.getValue() > Session.getSatelliteConfig().maxImageValidityDays) {
+ LOGGER.error("Invalid date returned after asking user extension duration: "
+ + sldDaysToExtend.getValue());
+ return -1;
+ }
+ return sldDaysToExtend.getValue();
+ }
+} \ No newline at end of file