diff options
author | Simon Rettberg | 2016-01-26 16:17:51 +0100 |
---|---|---|
committer | Simon Rettberg | 2016-01-26 16:17:51 +0100 |
commit | 79f36e1cbc7dfe0d4d72ec4bcdf135001fa7e491 (patch) | |
tree | 2e11e6ba22decd2684934774a96e9887e9c6f8df /dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java | |
parent | [server] Implement per-user upload limit (diff) | |
download | tutor-module-79f36e1cbc7dfe0d4d72ec4bcdf135001fa7e491.tar.gz tutor-module-79f36e1cbc7dfe0d4d72ec4bcdf135001fa7e491.tar.xz tutor-module-79f36e1cbc7dfe0d4d72ec4bcdf135001fa7e491.zip |
[client] Refresh image list when upload completes
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java | 42 |
1 files changed, 32 insertions, 10 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java index e08858fd..9fc1ec06 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java @@ -29,9 +29,13 @@ import javax.swing.SwingUtilities; import org.apache.log4j.Logger; import org.apache.thrift.TException; import org.openslx.bwlp.thrift.iface.SatelliteStatus; +import org.openslx.bwlp.thrift.iface.TransferState; import org.openslx.dozmod.App; import org.openslx.dozmod.Config; import org.openslx.dozmod.filetransfer.DownloadTask; +import org.openslx.dozmod.filetransfer.TransferEvent; +import org.openslx.dozmod.filetransfer.TransferEventListener; +import org.openslx.dozmod.filetransfer.UploadTask; import org.openslx.dozmod.gui.Gui.GuiCallable; import org.openslx.dozmod.gui.activity.ActivityPanel; import org.openslx.dozmod.gui.activity.DownloadPanel; @@ -82,28 +86,33 @@ public abstract class MainWindow { * * @param clazz */ - @SuppressWarnings("unchecked") public static <T extends CompositePage> T showPage(Class<T> clazz) { + T page = getPage(clazz); + if (page == null) { + throw new RuntimeException("Tried to show unknown page " + clazz.getSimpleName()); + } if (currentPage != null) { if (!currentPage.requestHide()) { return null; // Canceled by currently shown page } currentPage.setVisible(false); } - - currentPage = pages.get(clazz); - if (currentPage == null) { - Gui.showMessageBox(mainWindow, "Tried to show unknown page " + clazz.getSimpleName(), - MessageType.ERROR, LOGGER, null); - Gui.exit(1); - return null; - } + currentPage = page; // sets the starting preferred size. currentPage.requestShow(); currentPage.setVisible(true); mainWindow.validate(); - return (T) currentPage; + return page; + } + + @SuppressWarnings("unchecked") + public static <T extends CompositePage> T getPage(Class<T> clazz) { + CompositePage page = pages.get(clazz); + if (page == null) { + return null; + } + return (T) page; } public static void centerShell(Window shell) { @@ -332,6 +341,19 @@ public abstract class MainWindow { public static void addUpload(UploadWizardState state) { addPanel(new UploadPanel(state)); + final UploadTask task = state.upload.getUploadTask(); + task.addListener(new TransferEventListener() { + @Override + public void update(TransferEvent event) { + if (event.state == TransferState.FINISHED) { + ImageListWindow page = getPage(ImageListWindow.class); + if (page != null) { + page.refresh(true); + } + task.removeListener(this); + } + } + }); } public static void addDownload(String imageName, String diskFile, DownloadTask dlTask) { |