diff options
author | Simon Rettberg | 2018-06-21 15:22:50 +0200 |
---|---|---|
committer | Simon Rettberg | 2018-06-21 15:22:50 +0200 |
commit | 4180be8908fa4f520599e6d416b403008e384310 (patch) | |
tree | 98480c8b9f5420e0e8ae8c774f296284e7fd43b0 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java | |
parent | [client] showMessagBox with clickable Hyperlink (diff) | |
download | tutor-module-4180be8908fa4f520599e6d416b403008e384310.tar.gz tutor-module-4180be8908fa4f520599e6d416b403008e384310.tar.xz tutor-module-4180be8908fa4f520599e6d416b403008e384310.zip |
[client] Refactor change monitor classes, better error message handling
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java | 48 |
1 files changed, 33 insertions, 15 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java index 512175a5..9794c37a 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java @@ -1,6 +1,5 @@ package org.openslx.dozmod.gui.window; -import java.awt.Color; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -35,6 +34,8 @@ import org.openslx.dozmod.gui.Gui; import org.openslx.dozmod.gui.MainWindow; import org.openslx.dozmod.gui.changemonitor.AbstractControlWrapper; import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor; +import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor.TextNotEmptyConstraint; +import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor.ValidationConstraint; import org.openslx.dozmod.gui.helper.DateTimeHelper; import org.openslx.dozmod.gui.helper.MessageType; import org.openslx.dozmod.gui.helper.UiFeedback; @@ -126,12 +127,31 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements }); // Add controls to change monitor - changeMonitor.addFixedCombo(cboVersions, Comparators.imageVersionDetails, + changeMonitor.addFixedCombo(cboVersions, Comparators.imageVersionDetails) + .addConstraint( new DialogChangeMonitor.ValidationConstraint<ImageVersionDetails>() { - public boolean isValid(ImageVersionDetails userInput) { - return userInput != null && userInput.isValid; + public String checkStateValid(ImageVersionDetails userInput) { + if (userInput != null && userInput.isValid) + return null; + return "Keine/Ungültige VM-Version ausgewählt"; } - }, "Keine/Ungültige VM-Version ausgewählt"); + }); + // Create constraint for date start/end + final Date maxValidity; + Calendar c = Calendar.getInstance(); + c.add(Calendar.DAY_OF_MONTH, Session.getSatelliteConfig().maxLectureValidityDays); + maxValidity = c.getTime(); + ValidationConstraint<Object> dateRangeValidator = new DialogChangeMonitor.ValidationConstraint<Object>() { + public String checkStateValid(Object ignored) { + Date start = DateTimeHelper.getDateFrom(dtpStartDate, spnStartTime); + Date end = DateTimeHelper.getDateFrom(dtpEndDate, spnEndTime); + if (!end.after(start)) + return "Enddatum darf nicht vor dem Startdatum liegen"; + if (end.after(maxValidity)) + return "Enddatum liegt nach dem " + FormatHelper.shortDate(maxValidity); + return null; + } + }; changeMonitor.add(chkAutoUpdate); changeMonitor.add(chkIsExam); changeMonitor.add(chkHasInternetAccess); @@ -139,20 +159,18 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements changeMonitor.add(chkIsActive); changeMonitor.add(chkCustomPermAdmin); changeMonitor.add(chkCustomPermEdit); - changeMonitor.add(txtTitle, DialogChangeMonitor.VC_NOT_EMPTY, "Veranstaltungsname darf nicht leer sein"); - changeMonitor.add(txtDescription, DialogChangeMonitor.VC_NOT_EMPTY, "Beschreibung darf nicht leer sein"); - changeMonitor.add(dtpEndDate, null, null); - changeMonitor.add(dtpStartDate, null, null); - changeMonitor.add(spnEndTime); - changeMonitor.add(spnStartTime); + changeMonitor.add(txtTitle).addConstraint(new TextNotEmptyConstraint("Veranstaltungsname darf nicht leer sein")); + changeMonitor.add(txtDescription).addConstraint(new TextNotEmptyConstraint("Beschreibung darf nicht leer sein")); + changeMonitor.add(dtpEndDate).addConstraint(dateRangeValidator); + changeMonitor.add(dtpStartDate).addConstraint(dateRangeValidator); + changeMonitor.add(spnEndTime).addConstraint(dateRangeValidator); + changeMonitor.add(spnStartTime).addConstraint(dateRangeValidator); changeListenerPermissions = changeMonitor.add(ctlPermissionManager); ctlLocationSelector.addToChangeMonitor(changeMonitor); ctlRunscriptConfigurator.addToChangeMonitor(changeMonitor); ctlNetshareConfigurator.addToChangeMonitor(changeMonitor); ctlLdapFilterConfigurator.addToChangeMonitor(changeMonitor); - // TODO: NetShare: Having uncommitted changes in the input fields should be handled too - // TODO: NetRules editor - // TODO: LDAP editor + // TODO: LDAP/NetShare: Having uncommitted changes in the input fields should be handled too // End change monitor addWindowListener(new WindowAdapter() { @@ -234,7 +252,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements btnNetrules.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - List<NetRule> newNetrules = LectureNetrulesWindow.open(me, lecture.networkExceptions); + List<NetRule> newNetrules = LectureNetrulesWindow.open(me, lecture.networkExceptions, changeMonitor); if (newNetrules != null) lecture.networkExceptions = newNetrules; } |