diff options
author | Simon Rettberg | 2015-08-25 18:39:50 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-08-25 18:39:50 +0200 |
commit | 6f1e999cd903fe319970e89ff2568b561f6d2d85 (patch) | |
tree | 1081d02e55639db01b6b927f5f034dae03930b6c /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java | |
parent | [client] Display memory usage (diff) | |
download | tutor-module-6f1e999cd903fe319970e89ff2568b561f6d2d85.tar.gz tutor-module-6f1e999cd903fe319970e89ff2568b561f6d2d85.tar.xz tutor-module-6f1e999cd903fe319970e89ff2568b561f6d2d85.zip |
[client] Mark invalid image versions in lecture details window
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 | 149 |
1 files changed, 83 insertions, 66 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 3a7a63d8..f0ba8123 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 @@ -12,6 +12,7 @@ import java.util.Calendar; import java.util.Collections; import java.util.Comparator; import java.util.Date; +import java.util.Iterator; import java.util.List; import java.util.Map; @@ -63,6 +64,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements public interface LectureUpdatedCallback { public void updated(boolean success); } + /** * Callback to be called when changing lecture details on the server */ @@ -82,14 +84,14 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements * Image, that the lecture is linked to. */ private ImageDetailsRead image = null; - + /** * Whether the custom permission window has been used. */ private boolean permissionsChanged = false; private Task dateChecker; - + private boolean reactive = false; /** @@ -109,17 +111,17 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements dateChecker.cancel(); } }); - + btnLinkImage.addActionListener(new ActionListener() { - + @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub - + } }); /** - * Button listeners + * Button listeners */ btnClose.addActionListener(new ActionListener() { @Override @@ -144,12 +146,12 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements public void actionPerformed(ActionEvent e) { UserListWindow.open(JOptionPane.getFrameForComponent(btnChangeOwner), new UserAddedCallback() { - @Override - public void userAdded(UserInfo user, UserListWindow window) { - window.dispose(); - setLectureOwner(user); - } - }, "Besitzer festlegen"); + @Override + public void userAdded(UserInfo user, UserListWindow window) { + window.dispose(); + setLectureOwner(user); + } + }, "Besitzer festlegen"); } }); btnPermissions.addActionListener(new ActionListener() { @@ -157,8 +159,9 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements public void actionPerformed(ActionEvent arg0) { LOGGER.info(permissionMap); LOGGER.info(lecture.defaultPermissions); - PermissionDefaultToCustomLink<LecturePermissions> pl = LectureCustomPermissionWindow.open(JOptionPane.getFrameForComponent(me), permissionMap, lecture.defaultPermissions); - if (pl != null && pl.defaultPermissions != null && pl.customPermissions != null){ + PermissionDefaultToCustomLink<LecturePermissions> pl = LectureCustomPermissionWindow.open( + JOptionPane.getFrameForComponent(me), permissionMap, lecture.defaultPermissions); + if (pl != null && pl.defaultPermissions != null && pl.customPermissions != null) { lecture.defaultPermissions = pl.defaultPermissions; permissionMap = pl.customPermissions; permissionsChanged = true; @@ -191,21 +194,26 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements * @param lectureId the id of the lecture to be displayed */ public void setLecture(final String lectureId) { - ThriftActions.getLectureWithImageDetails(JOptionPane.getFrameForComponent(me), lectureId, new LectureMetaCallback() { - @Override - public void fetchedLectureDetails(LectureRead lectureDetails, ImageDetailsRead imageDetails) { - synchronized (me) { - lecture = lectureDetails; - image = imageDetails; - permissionMap = ThriftActions.getLecturePermissions(JOptionPane.getFrameForComponent(me), lecture.lectureId); - } - fill(); - } - @Override - public void fetchedLecturePermissions(Map<String, LecturePermissions> permissions) { return; } - }); - - + ThriftActions.getLectureWithImageDetails(JOptionPane.getFrameForComponent(me), lectureId, + new LectureMetaCallback() { + @Override + public void fetchedLectureDetails(LectureRead lectureDetails, + ImageDetailsRead imageDetails) { + synchronized (me) { + lecture = lectureDetails; + image = imageDetails; + permissionMap = ThriftActions.getLecturePermissions( + JOptionPane.getFrameForComponent(me), lecture.lectureId); + } + fill(); + } + + @Override + public void fetchedLecturePermissions(Map<String, LecturePermissions> permissions) { + return; + } + }); + } /** @@ -236,6 +244,13 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements // version combo List<ImageVersionDetails> versions = image.getVersions(); + for (Iterator<ImageVersionDetails> it = image.getVersions().iterator(); it.hasNext();) { + ImageVersionDetails version = it.next(); + if (!version.isValid && !lecture.imageVersionId.equals(version.versionId)) { + it.remove(); + } + } + // sort versions by createtime Collections.sort(versions, new Comparator<ImageVersionDetails>() { public int compare(ImageVersionDetails o1, ImageVersionDetails o2) { @@ -271,13 +286,13 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements * @param user UserInfo representation of the new owner */ private void setLectureOwner(final UserInfo user) { - if (!ThriftActions.setLectureOwner(JOptionPane.getFrameForComponent(this), - lecture.getLectureId(), user)) { + if (!ThriftActions.setLectureOwner(JOptionPane.getFrameForComponent(this), lecture.getLectureId(), + user)) { return; } // success - Gui.showMessageBox(me, "Besitzrechte übertragen an " + FormatHelper.userName(user), - MessageType.INFO, null, null); + Gui.showMessageBox(me, "Besitzrechte übertragen an " + FormatHelper.userName(user), MessageType.INFO, + null, null); makeEditable(false); String lectureId = lecture.getLectureId(); synchronized (me) { @@ -291,62 +306,57 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements * Triggers the download of the currently used image version of the lecture */ private void performImageDownload() { - if (image == null){ - Gui.showMessageBox(this, "Image ungültig.", MessageType.ERROR, - null, null); + if (image == null) { + Gui.showMessageBox(this, "Image ungültig.", MessageType.ERROR, null, null); return; } btnDownloadImage.setEnabled(false); long versionSize = 0; for (ImageVersionDetails version : image.versions) { - if(version.versionId.equals(lecture.imageVersionId)){ + if (version.versionId.equals(lecture.imageVersionId)) { versionSize = version.fileSize; } } - if (versionSize == 0){ - Gui.showMessageBox(this, "Fehler bei der Abfrag der Größe des Images.", MessageType.ERROR, - null, null); + if (versionSize == 0) { + Gui.showMessageBox(this, "Fehler bei der Abfrag der Größe des Images.", MessageType.ERROR, null, + null); return; } ThriftActions.initDownload(JOptionPane.getFrameForComponent(this), lecture.imageVersionId, image.imageName, image.virtId, versionSize, null); } + /** - * Push the changes of the image details to the satellite + * Push the changes of the image details to the satellite */ private void saveChanges() { // date valid TODO sat max time - if (!isPeriodValid(DateTimeHelper.getDateFrom(startDate, startTime), DateTimeHelper.getDateFrom(endDate, endTime), true)) { + if (!isPeriodValid(DateTimeHelper.getDateFrom(startDate, startTime), + DateTimeHelper.getDateFrom(endDate, endTime), true)) { return; } // first build the ImageBaseWrite from the GUI fields - final LectureWrite lectureWrite = new LectureWrite( - txtTitle.getText(), - txtDescription.getText(), - lecture.getImageVersionId(), - btnAutoUpdate.isSelected(), - btnIsActive.isSelected(), + final LectureWrite lectureWrite = new LectureWrite(txtTitle.getText(), txtDescription.getText(), + lecture.getImageVersionId(), btnAutoUpdate.isSelected(), btnIsActive.isSelected(), DateTimeHelper.getDateFrom(startDate, startTime).getTime() / 1000L, - DateTimeHelper.getDateFrom(endDate, endTime).getTime() / 1000L, - null, - null, - btnIsExam.isSelected(), - btnHasInternetAccess.isSelected(), - lecture.getDefaultPermissions()); + DateTimeHelper.getDateFrom(endDate, endTime).getTime() / 1000L, null, null, + btnIsExam.isSelected(), btnHasInternetAccess.isSelected(), lecture.getDefaultPermissions()); // now trigger the actual action btnSaveChanges.setEnabled(false); try { - ThriftManager.getSatClient().updateLecture(Session.getSatelliteToken(), - lecture.getLectureId(), lectureWrite); + ThriftManager.getSatClient().updateLecture(Session.getSatelliteToken(), lecture.getLectureId(), + lectureWrite); } catch (TException e) { - ThriftError.showMessage(JOptionPane.getFrameForComponent(this), LOGGER, e, "Fehler beim Updaten der Veranstaltung"); + ThriftError.showMessage(JOptionPane.getFrameForComponent(this), LOGGER, e, + "Fehler beim Updaten der Veranstaltung"); callback.updated(true); return; } - if(permissionsChanged){ + if (permissionsChanged) { try { - ThriftManager.getSatClient().writeLecturePermissions(Session.getSatelliteToken(), lecture.lectureId, permissionMap); + ThriftManager.getSatClient().writeLecturePermissions(Session.getSatelliteToken(), + lecture.lectureId, permissionMap); permissionsChanged = false; } catch (TException e) { LOGGER.error("Fehler beim Übertragen der Berechtigungen: ", e); @@ -359,7 +369,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements } private void listenToChange() { - if (reactive) + if (reactive) return; // final step, add listeners to react to change final DocumentListener docListener = new DocumentListener() { @@ -367,10 +377,12 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements public void removeUpdate(DocumentEvent e) { changedUpdate(e); } + @Override public void insertUpdate(DocumentEvent e) { changedUpdate(e); } + @Override public void changedUpdate(DocumentEvent e) { reactToChange(); @@ -389,12 +401,12 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements } }; cboVersions.addItemListener(comboItemListener); - + // Listener to detect changes in checkboxes final ActionListener checkBoxListener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - reactToChange(); + reactToChange(); } }; btnAutoUpdate.addActionListener(checkBoxListener); @@ -412,6 +424,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements reactive = true; } + private boolean isPeriodValid(final Date start, final Date end, boolean feedback) { if (start == null || end == null) return false; @@ -425,7 +438,8 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements final Date now = new Date(); if (now.after(end)) { if (feedback) - Gui.showMessageBox(me, "Endzeit liegt in die Vergangenheit!", MessageType.ERROR, LOGGER, null); + Gui.showMessageBox(me, "Endzeit liegt in die Vergangenheit!", MessageType.ERROR, LOGGER, + null); endDate.setForeground(Color.red); } else { endDate.setForeground(dateTimeTextColor); @@ -434,6 +448,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements } return false; } + /** * Checks whether the user changed any fields of the image details and * enables the save button if so. @@ -445,11 +460,12 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements 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()) { + || (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())) { + } else if (!txtDescription.getText().isEmpty() + && !txtDescription.getText().equals(lecture.getDescription())) { changed = true; } else if (btnAutoUpdate.isSelected() != lecture.autoUpdate) { changed = true; @@ -462,9 +478,10 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements } else if (permissionsChanged) { changed = true; } - + btnSaveChanges.setEnabled(changed); } + /** * Enables/disables the editable fields based on 'editable' * |