summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java
diff options
context:
space:
mode:
authorJonathan Bauer2015-08-18 17:26:51 +0200
committerJonathan Bauer2015-08-18 17:26:51 +0200
commit41ffae2709d108742f176d7d75752cf4290e6703 (patch)
tree94330423bedd83f33eda2cdedf3aeb11581c466e /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java
parent[client] only enable the "isTemplate" checkbox if user is superuser (diff)
downloadtutor-module-41ffae2709d108742f176d7d75752cf4290e6703.tar.gz
tutor-module-41ffae2709d108742f176d7d75752cf4290e6703.tar.xz
tutor-module-41ffae2709d108742f176d7d75752cf4290e6703.zip
[client] async delete call + callback. Another callback when downloading an image was initialized
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java82
1 files changed, 56 insertions, 26 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java
index 254e2723..54a414c2 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java
@@ -25,6 +25,7 @@ import org.openslx.bwlp.thrift.iface.ImageSummaryRead;
import org.openslx.bwlp.thrift.iface.TAuthorizationException;
import org.openslx.bwlp.thrift.iface.TNotFoundException;
import org.openslx.dozmod.filetransfer.TransferHelper;
+import org.openslx.dozmod.filetransfer.TransferHelper.DownloadCallback;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.MainWindow;
import org.openslx.dozmod.gui.helper.MessageType;
@@ -36,8 +37,6 @@ import org.openslx.dozmod.gui.wizard.LectureWizard;
import org.openslx.dozmod.permissions.ImagePerms;
import org.openslx.dozmod.thrift.ImageCache;
import org.openslx.dozmod.thrift.Session;
-import org.openslx.dozmod.thrift.UserCache;
-import org.openslx.dozmod.util.FormatHelper;
import org.openslx.thrifthelper.ThriftManager;
import org.openslx.util.QuickTimer;
import org.openslx.util.QuickTimer.Task;
@@ -48,7 +47,7 @@ import org.openslx.util.QuickTimer.Task;
*
*/
@SuppressWarnings("serial")
-public class ImageListWindow extends ImageListWindowLayout {
+public class ImageListWindow extends ImageListWindowLayout implements DownloadCallback {
private final static Logger LOGGER = Logger.getLogger(ImageListWindow.class);
@@ -111,8 +110,7 @@ public class ImageListWindow extends ImageListWindowLayout {
performImageDownload(imageTable.getSelectedItem());
}
if (e.getSource().equals(popupItemDelete)) {
- // TODO delete that image
- LOGGER.debug("Delete image clicked");
+
}
}
});
@@ -189,19 +187,20 @@ public class ImageListWindow extends ImageListWindowLayout {
@Override
public void actionPerformed(ActionEvent e) {
startLectureWizard(imageTable.getSelectedItem());
-
}
});
downloadButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
performImageDownload(imageTable.getSelectedItem());
+ // TODO refresh
}
});
deleteButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
deleteLatestVersion(getSelectedImage());
+ // TODO refresh
}
});
backButton.addActionListener(new ActionListener() {
@@ -236,7 +235,8 @@ public class ImageListWindow extends ImageListWindowLayout {
}
});
}
- });
+ }, 1000);
+ // TODO do this periodically with a large interval, say 10s?
}
/**
@@ -341,7 +341,7 @@ public class ImageListWindow extends ImageListWindowLayout {
}
/********************************************************************************
*
- * Helpers triggering the actual actions
+ * Helpers triggering the actual actions
*
********************************************************************************/
@@ -366,9 +366,18 @@ public class ImageListWindow extends ImageListWindowLayout {
return;
downloadButton.setEnabled(false);
TransferHelper.initDownload(JOptionPane.getFrameForComponent(this), image.latestVersionId,
- image.imageName, image.virtId, image.fileSize);
+ image.imageName, image.virtId, image.fileSize, this);
+ }
+ /**
+ * Callback when download initialized
+ *
+ * @param success true if downloading, false otherwise
+ */
+ @Override
+ public void downloadInitialized(boolean success) {
+ LOGGER.debug("called with: " + success);
+ refreshList(!success);
}
-
/**
* Deletes the latest version of the given image if it has one
*
@@ -378,24 +387,45 @@ public class ImageListWindow extends ImageListWindowLayout {
if (!hasLatestVersion(image))
return;
// requires confirmation of the user
- if (!Gui.showMessageBox(me, "Wollen Sie die letzte Version von dieses Image wirklich löschen?", MessageType.QUESTION_YESNO, LOGGER, null))
+ if (!Gui.showMessageBox(me, "Wollen Sie die letzte Version von dieses Image wirklich löschen?",
+ MessageType.QUESTION_YESNO, LOGGER, null))
return;
// try to actually delete this version of the image
- try {
- ThriftManager.getSatClient().deleteImageVersion(Session.getSatelliteToken(),
- image.getLatestVersionId());
- LOGGER.info("Deleted version '" + image.getLatestVersionId() + "' of image '"
- + image.getImageBaseId() + "'.");
- refreshList(true);
- } catch (TAuthorizationException e) {
- Gui.showMessageBox(me, "Sie sind nicht autorisiert dieses Image zu löschen!",
- MessageType.ERROR, LOGGER, e);
- } catch (TNotFoundException e) {
- Gui.showMessageBox(me, "Diese Image existiert nicht auf dem Satelliten!",
- MessageType.ERROR, LOGGER, e);
- } catch (TException e) {
- Gui.showMessageBox(me, "Interner Fehler! Siehe Logs.", MessageType.ERROR, LOGGER, e);
- }
+ QuickTimer.scheduleOnce(new Task() {
+ boolean success = false;
+ @Override
+ public void fire() {
+ try {
+ ThriftManager.getSatClient().deleteImageVersion(Session.getSatelliteToken(),
+ image.getLatestVersionId());
+ LOGGER.info("Deleted version '" + image.getLatestVersionId() + "' of image '"
+ + image.getImageBaseId() + "'.");
+ success = true;
+ } catch (TAuthorizationException e) {
+ Gui.showMessageBox(me, "Sie sind nicht autorisiert dieses Image zu löschen!",
+ MessageType.ERROR, LOGGER, e);
+ } catch (TNotFoundException e) {
+ Gui.showMessageBox(me, "Diese Image existiert nicht auf dem Satelliten!",
+ MessageType.ERROR, LOGGER, e);
+ } catch (TException e) {
+ Gui.showMessageBox(me, "Interner Fehler! Siehe Logs.", MessageType.ERROR, LOGGER, e);
+ }
+ Gui.asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ deletedLatestVersion(success);
+ }
+ });
+ }
+ });
+ }
+ /**
+ * Async callback when image was deleted
+ *
+ * @param success true if the latest image version was deleted, false otherwise
+ */
+ public void deletedLatestVersion(boolean success) {
+ refreshList(success);
}
/********************************************************************************