diff options
author | Jonathan Bauer | 2015-09-11 14:39:46 +0200 |
---|---|---|
committer | Jonathan Bauer | 2015-09-11 14:39:46 +0200 |
commit | 432ccb0b56f9c4ee050af46dd522fcb142e1a212 (patch) | |
tree | f8e0a12f116aacd0fa736b48b09de20c13af7372 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java | |
parent | [client] removed weird code (diff) | |
download | tutor-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.java | 236 |
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; } /** |