summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
diff options
context:
space:
mode:
authorSimon Rettberg2018-06-21 15:22:50 +0200
committerSimon Rettberg2018-06-21 15:22:50 +0200
commit4180be8908fa4f520599e6d416b403008e384310 (patch)
tree98480c8b9f5420e0e8ae8c774f296284e7fd43b0 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
parent[client] showMessagBox with clickable Hyperlink (diff)
downloadtutor-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.java48
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;
}