summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
diff options
context:
space:
mode:
authorJonathan Bauer2015-09-11 14:39:46 +0200
committerJonathan Bauer2015-09-11 14:39:46 +0200
commit432ccb0b56f9c4ee050af46dd522fcb142e1a212 (patch)
treef8e0a12f116aacd0fa736b48b09de20c13af7372 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
parent[client] removed weird code (diff)
downloadtutor-module-432ccb0b56f9c4ee050af46dd522fcb142e1a212.tar.gz
tutor-module-432ccb0b56f9c4ee050af46dd522fcb142e1a212.tar.xz
tutor-module-432ccb0b56f9c4ee050af46dd522fcb142e1a212.zip
[client] removed listenToChange() and run its code directly in the constructor
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.java236
1 files changed, 113 insertions, 123 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 9f5e773d..0fc05ee8 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
@@ -100,8 +100,6 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
private boolean imageLinkChanged = false;
- private boolean checkForChanges = false;
-
/**
* Constructor
*
@@ -142,16 +140,13 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
}
}
});
- /**
- * Button listeners
- */
+
btnClose.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
- if (reactToChange()
- && !Gui.showMessageBox(me,
- "Änderungen werden verworfen, wollen Sie wirklich abbrechen?",
- MessageType.QUESTION_YESNO, LOGGER, null))
+ if (reactToChange() && !Gui.showMessageBox(me,
+ "Änderungen werden verworfen, wollen Sie wirklich abbrechen?",
+ MessageType.QUESTION_YESNO, LOGGER, null))
return;
dispose();
}
@@ -175,9 +170,10 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
@Override
public void userAdded(UserInfo user, UserListWindow window) {
window.dispose();
- if (Gui.showMessageBox(me, "Sind Sie sicher, dass sie die Besitzerrechte an "
- + "einen anderen Account übertragen wollen?", MessageType.QUESTION_YESNO,
- LOGGER, null))
+ if (Gui.showMessageBox(me,
+ "Sind Sie sicher, dass sie die Besitzerrechte an "
+ + "einen anderen Account übertragen wollen?",
+ MessageType.QUESTION_YESNO, LOGGER, null))
setLectureOwner(user);
}
}, "Besitzer festlegen", lecture.ownerId);
@@ -188,8 +184,8 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
public void actionPerformed(ActionEvent arg0) {
LOGGER.info(permissionMap);
LOGGER.info(lecture.defaultPermissions);
- DefaultCustomPerms<LecturePermissions> pl = LecturePermissionWindow.open(me,
- permissionMap, lecture.defaultPermissions, lecture.ownerId);
+ DefaultCustomPerms<LecturePermissions> pl = LecturePermissionWindow.open(me, permissionMap,
+ lecture.defaultPermissions, lecture.ownerId);
if (pl != null && pl.defaultPermissions != null && pl.customPermissions != null) {
lecture.defaultPermissions = pl.defaultPermissions;
permissionMap = pl.customPermissions;
@@ -204,29 +200,72 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
saveChanges();
}
});
- btnSaveChanges.setEnabled(false);
- makeEditable(false);
- // save default color of date/time stuff to reset the background later
- dateTimeTextColor = startDate.getForeground();
- listenToChange();
- }
+ // final step, add listeners to react to change
+ final DocumentListener docListener = new DocumentListener() {
+ @Override
+ public void removeUpdate(DocumentEvent e) {
+ changedUpdate(e);
+ }
- /**
- * @param forceRefresh
- */
- private void refresh(boolean forceRefresh) {
- if (lecture == null)
- return;
- String lectureId = lecture.getLectureId();
- synchronized (me) {
- lecture = null;
- image = null;
- }
- setLecture(lectureId);
+ @Override
+ public void insertUpdate(DocumentEvent e) {
+ changedUpdate(e);
+ }
+
+ @Override
+ public void changedUpdate(DocumentEvent e) {
+ reactToChange();
+ }
+ };
+ txtTitle.getDocument().addDocumentListener(docListener);
+ txtDescription.getDocument().addDocumentListener(docListener);
+
+ // Comboboxes
+ final ItemListener comboItemListener = new ItemListener() {
+ @Override
+ public void itemStateChanged(ItemEvent e) {
+ if (e.getStateChange() == ItemEvent.SELECTED) {
+ reactToChange();
+ }
+ }
+ };
+ cboVersions.addItemListener(comboItemListener);
+
+ // Listener to detect changes in checkboxes
+ final ActionListener actionListener = new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ reactToChange();
+ }
+ };
+ ChangeListener changeListener = new ChangeListener() {
+ @Override
+ public void stateChanged(ChangeEvent e) {
+ reactToChange();
+ }
+ };
+ chkAutoUpdate.addActionListener(actionListener);
+ chkIsExam.addActionListener(actionListener);
+ chkHasInternetAccess.addActionListener(actionListener);
+ chkIsActive.addActionListener(actionListener);
+ startDate.addActionListener(actionListener);
+ endDate.addActionListener(actionListener);
+ startTime.addChangeListener(changeListener);
+ endTime.addChangeListener(changeListener);
+
+ // save default color of date/time stuff to reset the background later
+ dateTimeTextColor = startDate.getForeground();
+ // disable save button
+ btnSaveChanges.setEnabled(false);
+ // wait for the image to be loaded before (potentially) enabling fields
+ makeEditable(false);
}
/**
+ * Sets the lecture to show the details of by setting the 'lecture' and 'image'
+ * members to its metadata. This method will fetch the information from the sat
+ *
* @param lectureId the id of the lecture to be displayed
*/
public void setLecture(final String lectureId) {
@@ -252,7 +291,6 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
* callback function when we received the lecture's details from the server
*/
private void fill() {
- checkForChanges = false;
if (lecture == null) {
txtTitle.setText("-");
makeEditable(false);
@@ -327,8 +365,8 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
cboVersions.setModel(new DefaultComboBoxModel<ImageVersionDetails>(
versions.toArray(new ImageVersionDetails[versions.size()])));
- cboVersions.setSelectedItem(new ImageVersionDetails(lecture.getImageVersionId(), 0, 0, 0, null, true,
- true, true, null));
+ cboVersions.setSelectedItem(
+ new ImageVersionDetails(lecture.getImageVersionId(), 0, 0, 0, null, true, true, true, null));
}
/**
@@ -398,7 +436,6 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
* Push the changes of the image details to the satellite
*/
private void saveChanges() {
-
// check, whether autoupdate is selected and choose version accordingly
if (image != null) {
lecture.imageVersionId = chkAutoUpdate.isSelected() ? image.latestVersionId
@@ -443,65 +480,6 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
}
/**
- * Sets the listeners for the fields of the details panel and call
- * reactToChange() when actions occur
- */
- private void listenToChange() {
- // final step, add listeners to react to change
- final DocumentListener docListener = new DocumentListener() {
- @Override
- public void removeUpdate(DocumentEvent e) {
- changedUpdate(e);
- }
-
- @Override
- public void insertUpdate(DocumentEvent e) {
- changedUpdate(e);
- }
-
- @Override
- public void changedUpdate(DocumentEvent e) {
- reactToChange();
- }
- };
- txtTitle.getDocument().addDocumentListener(docListener);
- txtDescription.getDocument().addDocumentListener(docListener);
-
- // Comboboxes
- final ItemListener comboItemListener = new ItemListener() {
- @Override
- public void itemStateChanged(ItemEvent e) {
- if (e.getStateChange() == ItemEvent.SELECTED) {
- reactToChange();
- }
- }
- };
- cboVersions.addItemListener(comboItemListener);
-
- // Listener to detect changes in checkboxes
- final ActionListener actionListener = new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- reactToChange();
- }
- };
- ChangeListener changeListener = new ChangeListener() {
- @Override
- public void stateChanged(ChangeEvent e) {
- reactToChange();
- }
- };
- chkAutoUpdate.addActionListener(actionListener);
- chkIsExam.addActionListener(actionListener);
- chkHasInternetAccess.addActionListener(actionListener);
- chkIsActive.addActionListener(actionListener);
- startDate.addActionListener(actionListener);
- endDate.addActionListener(actionListener);
- startTime.addChangeListener(changeListener);
- endTime.addChangeListener(changeListener);
- }
-
- /**
* Checks if the given start and end date represent a valid time period.
* This is the case, if start < end and if current time < end
*
@@ -541,35 +519,48 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
* enables the save button if so.
*/
private boolean reactToChange() {
+ if (lecture == null)
+ return false;
+
boolean changed = false;
- if (lecture != null && checkForChanges) {
- // version checkbox changed?
- int vIndex = cboVersions.getSelectedIndex();
- ImageVersionDetails currentVersion = vIndex == -1 ? null : cboVersions.getItemAt(vIndex);
- if (currentVersion != null && !currentVersion.getVersionId().equals(lecture.getImageVersionId())) {
- changed = true;
- } else if ((DateTimeHelper.getDateFrom(startDate, startTime).getTime() / 1000L) != lecture.getStartTime()
- || (DateTimeHelper.getDateFrom(endDate, endTime).getTime() / 1000L) != lecture.getEndTime()) {
- changed = true;
- } else if (!txtTitle.getText().isEmpty() && !txtTitle.getText().equals(lecture.getLectureName())) {
- changed = true;
- } else if (!txtDescription.getText().isEmpty()
- && !txtDescription.getText().equals(lecture.getDescription())) {
- changed = true;
- } else if (chkAutoUpdate.isSelected() != lecture.autoUpdate) {
- changed = true;
- } else if (chkIsExam.isSelected() != lecture.isExam) {
- changed = true;
- } else if (chkHasInternetAccess.isSelected() != lecture.hasInternetAccess) {
- changed = true;
- } else if (chkIsActive.isSelected() != lecture.isEnabled) {
- changed = true;
- } else if (permissionsChanged) {
- changed = true;
- } else if (imageLinkChanged) {
- changed = true;
- }
+ btnSaveChanges.setEnabled(false);
+ // mandatory fields checks
+ if (txtTitle.getText().isEmpty()) {
+ lblError.setText("Kein Imagename!");
+ return false;
+ }
+ if (txtDescription.getText().isEmpty()) {
+ lblError.setText("Keine Beschreibung!");
+ return false;
+ }
+ // version checkbox changed?
+ ImageVersionDetails currentVersion = cboVersions.getItemAt(cboVersions.getSelectedIndex());
+ if (currentVersion == null) {
+ lblError.setText("Keine Version ausgewählt!");
+ return false;
+ }
+ // Date stuff
+ Date start = DateTimeHelper.getDateFrom(startDate, startTime);
+ Date end = DateTimeHelper.getDateFrom(endDate, endTime);
+ if (!isPeriodValid(start, end, false)) {
+ lblError.setText("Ungültiger Zeitraum!");
+ return false;
}
+ // done with mandatory checks, now only check for changes
+ // there first remove error message
+ lblError.setText(null);
+ changed = !txtTitle.getText().equals(lecture.getLectureName())
+ || !txtDescription.getText().equals(lecture.getDescription())
+ || !currentVersion.getVersionId().equals(lecture.getImageVersionId())
+ || (start.getTime() / 1000L) != lecture.getStartTime()
+ || (end.getTime() / 1000L) != lecture.getEndTime()
+ || chkAutoUpdate.isSelected() != lecture.autoUpdate
+ || chkIsExam.isSelected() != lecture.isExam
+ || chkHasInternetAccess.isSelected() != lecture.hasInternetAccess
+ || chkIsActive.isSelected() != lecture.isEnabled
+ || permissionsChanged
+ || imageLinkChanged;
+
btnSaveChanges.setEnabled(changed);
return changed;
}
@@ -596,7 +587,6 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
endDate.setEnabled(editable);
endTime.setEnabled(editable);
btnDownloadImage.setEnabled(ImagePerms.canDownload(image));
- checkForChanges = editable;
}
/**