diff options
author | Jonathan Bauer | 2015-08-18 17:26:51 +0200 |
---|---|---|
committer | Jonathan Bauer | 2015-08-18 17:26:51 +0200 |
commit | 41ffae2709d108742f176d7d75752cf4290e6703 (patch) | |
tree | 94330423bedd83f33eda2cdedf3aeb11581c466e /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java | |
parent | [client] only enable the "isTemplate" checkbox if user is superuser (diff) | |
download | tutor-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.java | 82 |
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); } /******************************************************************************** |