summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java
diff options
context:
space:
mode:
authorSimon Rettberg2016-01-26 16:17:51 +0100
committerSimon Rettberg2016-01-26 16:17:51 +0100
commit79f36e1cbc7dfe0d4d72ec4bcdf135001fa7e491 (patch)
tree2e11e6ba22decd2684934774a96e9887e9c6f8df /dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java
parent[server] Implement per-user upload limit (diff)
downloadtutor-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.java42
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) {