summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
diff options
context:
space:
mode:
authorSimon Rettberg2016-07-22 17:32:28 +0200
committerSimon Rettberg2016-07-22 17:32:28 +0200
commitfb90115b3424842d0cf6443c8a7a2fc002d2d7e8 (patch)
treeb7f3b900ece6cb3252512eadd1095b34185c9c3c /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
parent[server] Fix embarassing messup in setExpireDate method (SQL and forgot commit) (diff)
downloadtutor-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.java72
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;
}
}
-