diff options
author | Jonathan Bauer | 2018-11-27 17:45:34 +0100 |
---|---|---|
committer | Jonathan Bauer | 2018-11-27 17:45:34 +0100 |
commit | 5674f7e63f599ae71d54e50c1bdb53ef11b4d186 (patch) | |
tree | d83b58530e9ec9181c9f479d555596b753d2ce45 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper | |
parent | [client] fill new form fields on netshare selection (diff) | |
download | tutor-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.java | 97 |
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 |