diff options
author | Simon Rettberg | 2016-07-22 17:32:28 +0200 |
---|---|---|
committer | Simon Rettberg | 2016-07-22 17:32:28 +0200 |
commit | fb90115b3424842d0cf6443c8a7a2fc002d2d7e8 (patch) | |
tree | b7f3b900ece6cb3252512eadd1095b34185c9c3c /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java | |
parent | [server] Fix embarassing messup in setExpireDate method (SQL and forgot commit) (diff) | |
download | tutor-module-fb90115b3424842d0cf6443c8a7a2fc002d2d7e8.tar.gz tutor-module-fb90115b3424842d0cf6443c8a7a2fc002d2d7e8.tar.xz tutor-module-fb90115b3424842d0cf6443c8a7a2fc002d2d7e8.zip |
[client] Add rudimentary menu entry to extend image expire date
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java | 72 |
1 files changed, 53 insertions, 19 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java index 66b6a3c5..0b602984 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java @@ -64,6 +64,7 @@ import org.openslx.dozmod.util.MapHelper; import org.openslx.thrifthelper.ThriftManager; import org.openslx.util.QuickTimer; import org.openslx.util.QuickTimer.Task; +import org.openslx.util.Util; /** * Window for displaying and editing the details of an image. @@ -77,9 +78,10 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe * Self-reference */ private final ImageDetailsWindow me = this; - + /** - * Action handler proxying thrift calls to differentiate between local and published image mode + * Action handler proxying thrift calls to differentiate between local and + * published image mode */ private final ImageDetailsActions actionHandler; @@ -121,6 +123,8 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe private final JMenuItem mnuNewLecture = new JMenuItem("Neue Veranstaltung"); private final JMenuItem mnuDownload = new JMenuItem("Download"); private final JMenuItem mnuDelete = new JMenuItem("Löschen"); + private final JMenuItem mnuExtendExpiryDate = new JMenuItem( + "Ablaufzeitpunk vom aktuellen Datum ausgehend neu berechnen"); private boolean metadataChanged = false; private boolean permissionsChanged = false; @@ -131,7 +135,8 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe * @param modalParent parent of this popup window * @param callback callback to be called when the image details have changed */ - public ImageDetailsWindow(Frame modalParent, ImageUpdatedCallback callback, ImageDetailsActions actionHandler) { + public ImageDetailsWindow(Frame modalParent, ImageUpdatedCallback callback, + ImageDetailsActions actionHandler) { super(modalParent); this.callback = callback; this.actionHandler = actionHandler; @@ -236,6 +241,9 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe if (e.getSource().equals(mnuDelete)) { deleteVersions(tblVersions.getSelectedItems()); } + if (e.getSource().equals(mnuExtendExpiryDate)) { + extendVersionExpiry(tblVersions.getSelectedItems()); + } } }); @@ -243,6 +251,10 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe pop.addMenuItem(mnuDownload); pop.addSeparator(); pop.addMenuItem(mnuDelete); + if (Session.isSuperUser()) { + pop.addSeparator(); + pop.addMenuItem(mnuExtendExpiryDate); + } // keyboard shortcut tblVersions.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put( @@ -291,12 +303,14 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe } if (e.isPopupTrigger()) { boolean multiSelection = tblVersions.getSelectedRowCount() != 1; - mnuNewLecture.setEnabled(tblVersions.getSelectedItem().isValid - && ImagePerms.canLink(image) && !multiSelection); - mnuDownload.setEnabled(tblVersions.getSelectedItem().isValid - && ImagePerms.canDownload(image) && !multiSelection); + mnuNewLecture.setEnabled(!multiSelection && tblVersions.getSelectedItem().isValid + && ImagePerms.canLink(image)); + mnuDownload.setEnabled(!multiSelection && tblVersions.getSelectedItem().isValid + && ImagePerms.canDownload(image)); mnuDelete.setEnabled(tblVersions.getSelectedItem().isValid && ImagePerms.canEdit(image)); + mnuExtendExpiryDate.setEnabled(multiSelection + || tblVersions.getSelectedItem().isValid); pop.show(e.getComponent(), e.getX(), e.getY()); } } @@ -420,11 +434,13 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe } /** - * Called by the "Publish" button. Tries to upload that image to the masterserver. + * Called by the "Publish" button. Tries to upload that image to the + * masterserver. */ private void uploadToMaster() { // let the user confirm or abort - if (!Gui.showMessageBox("Wollen Sie diese VM wirklich landesweit veröffentlichen?", MessageType.QUESTION_YESNO, LOGGER, null)) + if (!Gui.showMessageBox("Wollen Sie diese VM wirklich landesweit veröffentlichen?", + MessageType.QUESTION_YESNO, LOGGER, null)) return; // start upload to masterserver QuickTimer.scheduleOnce(new Task() { @@ -530,13 +546,12 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe private void deleteVersion(final ImageVersionDetails version) { if (version == null) return; - actionHandler.deleteImageVersion(version, - new DeleteCallback() { - @Override - public void isDeleted(boolean success) { - refresh(success); - } - }); + actionHandler.deleteImageVersion(version, new DeleteCallback() { + @Override + public void isDeleted(boolean success) { + refresh(success); + } + }); } /** @@ -552,6 +567,25 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe } } + private void extendVersionExpiry(List<ImageVersionDetails> versions) { + int count = 0; + for (ImageVersionDetails img : versions) { + try { + ThriftManager.getSatClient().setImageVersionExpiry(Session.getSatelliteToken(), + img.versionId, + Util.unixTime() + Session.getSatelliteConfig().maxImageValidityDays * 86400); + count++; + } catch (TException e) { + ThriftError.showMessage(this, LOGGER, e, "Konnte Ablaufdatum der Version " + img.versionId + + " nicht verlängern."); + } + } + if (count > 0) { + Gui.showMessageBox(this, "Erfolgreich verlängerte Abbilder: " + count, MessageType.INFO, null, null); + refresh(true); + } + } + /******************************************************************************** * * General UI helpers @@ -628,7 +662,7 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe } cboShareMode.setSelectedItem(image.getShareMode()); } - + String tagsString = ""; if (image.getTags() != null) { for (String tag : image.getTags()) { @@ -738,7 +772,8 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe * @param modalParent parent of this window * @param imageBaseId id of the image to set the details of */ - public static void open(Frame modalParent, String imageBaseId, ImageUpdatedCallback callback, ImageDetailsActions actionHandler) { + public static void open(Frame modalParent, String imageBaseId, ImageUpdatedCallback callback, + ImageDetailsActions actionHandler) { ImageDetailsWindow win = new ImageDetailsWindow(modalParent, callback, actionHandler); win.setImage(imageBaseId); win.setVisible(true); @@ -789,4 +824,3 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe return true; } } - |