summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadSummaryPage.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-10-01 20:00:27 +0200
committerSimon Rettberg2015-10-01 20:00:27 +0200
commit1fd45f1ec985012179b26c8136eadf0c5ae3c2c8 (patch)
tree05f2c0065d4e837f896cd3b0668125e87a211806 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadSummaryPage.java
parent[client] Fix escape not working in message boxes (diff)
downloadtutor-module-1fd45f1ec985012179b26c8136eadf0c5ae3c2c8.tar.gz
tutor-module-1fd45f1ec985012179b26c8136eadf0c5ae3c2c8.tar.xz
tutor-module-1fd45f1ec985012179b26c8136eadf0c5ae3c2c8.zip
[client] Start upload only when finishing wizard, add final summary page to wizard
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadSummaryPage.java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadSummaryPage.java138
1 files changed, 138 insertions, 0 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadSummaryPage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadSummaryPage.java
new file mode 100644
index 00000000..8c7d653d
--- /dev/null
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadSummaryPage.java
@@ -0,0 +1,138 @@
+package org.openslx.dozmod.gui.wizard.page;
+
+import org.apache.log4j.Logger;
+import org.openslx.bwlp.thrift.iface.TransferState;
+import org.openslx.dozmod.filetransfer.TransferEvent;
+import org.openslx.dozmod.filetransfer.TransferEventListener;
+import org.openslx.dozmod.gui.Gui;
+import org.openslx.dozmod.gui.MainWindow;
+import org.openslx.dozmod.gui.wizard.Wizard;
+import org.openslx.dozmod.gui.wizard.layout.ImageUploadSummaryPageLayout;
+import org.openslx.dozmod.state.UploadWizardState;
+import org.openslx.dozmod.thrift.UploadInitiator.UploadInitState;
+import org.openslx.util.QuickTimer;
+
+@SuppressWarnings("serial")
+public class ImageUploadSummaryPage extends ImageUploadSummaryPageLayout {
+
+ private static final Logger LOGGER = Logger.getLogger(ImageUploadSummaryPage.class);
+
+ private boolean pageIsVisible = false;
+ private boolean uploadListenerAdded = false;
+ private final UploadWizardState state;
+
+ private final TransferEventListener uploadListener = new TransferEventListener() {
+ @Override
+ public void update(TransferEvent event) {
+ LOGGER.debug("update transfer event");
+ if (!pageIsVisible)
+ return;
+ if (event.progress != null) {
+ progressBar.setStatus(event.progress);
+ if (event.state == TransferState.FINISHED) {
+ updateInfoText(null);
+ state.upload.getUploadTask().removeListener(uploadListener);
+ }
+ }
+ }
+ };
+
+ private final QuickTimer.Task updateHelpText = new QuickTimer.Task() {
+ private UploadInitState lastInitState = null;
+
+ @Override
+ public void fire() {
+ LOGGER.debug("update help text");
+ if (!pageIsVisible) {
+ this.cancel();
+ return;
+ }
+ if (!uploadListenerAdded && state.upload.getUploadTask() != null) {
+ uploadListenerAdded = true;
+ state.upload.getUploadTask().addListener(uploadListener);
+ }
+ UploadInitState initState = state.upload.getState();
+ if (initState != lastInitState) {
+ lastInitState = initState;
+ updateInfoText(initState);
+ }
+ if (lastInitState == UploadInitState.UPLOAD_STARTED || lastInitState == UploadInitState.ERROR) {
+ this.cancel();
+ }
+ }
+ };
+
+ private void updateInfoText(final UploadInitState initState) {
+ String text;
+ if (state.upload.getUploadTask() != null && state.upload.getUploadTask().isComplete()) {
+ text = "Die Virtuelle Maschine wurde erfolgreich auf den Server hochgeladen.";
+ } else if (initState == null) {
+ return;
+ } else {
+ switch (initState) {
+ case ERROR:
+ text = "Die Initialisierung des Uploads auf den Server ist fehlgeschlagen."
+ + " Sie können versuchen, den Vorgang erneut zu starten."
+ + " Falls das Problem weiterhin besteht,"
+ + " kontaktieren Sie den bwLehrpool-Support Ihrer Einrichtung.";
+ if (state.upload.getErrorMessage() != null) {
+ text += "<br><br>Weitere Informationen:<br>" + state.upload.getErrorMessage();
+ }
+ break;
+ case REQUESTING:
+ text = "Der Upload-Vorgang wird mit dem Server ausgehandelt...";
+ break;
+ case UPLOAD_STARTED:
+ text = "Der Upload Ihrer Virtuellen Maschine wurde gestartet."
+ + " Wenn Sie möchten, können Sie diesen Assistenten schließen,"
+ + " und die Anwendung weiterverwenden."
+ + " Die Übertragung läuft dabei im Hintergrund weiter.";
+ break;
+ case UPLOAD_STARTING:
+ text = "Die Verbindung zur Übertragung der VM wird aufgebaut...";
+ break;
+ case WAITING_FOR_SLOT:
+ text = "Der Server ist zur Zeit überlastet, da zu viele Uploads gleichzeitig laufen."
+ + " Es wird gewartet, bis der Server wieder Kapazitäten frei hat."
+ + " Bitte schließen Sie dieses Fenster nicht.";
+ break;
+ default:
+ return;
+ }
+ }
+ final String t = text;
+ Gui.asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ infoText.setText("<html><body style ='width:100%'>" + t + "</body></html>");
+ setPageComplete(initState == UploadInitState.UPLOAD_STARTED);
+ }
+ });
+ }
+
+ public ImageUploadSummaryPage(Wizard wizard, UploadWizardState state, boolean allowCreateLecture) {
+ super(wizard, allowCreateLecture);
+ this.state = state;
+ setPageComplete(false);
+ }
+
+ @Override
+ protected void onPageEnter() {
+ if (pageIsVisible)
+ return;
+ pageIsVisible = true;
+ QuickTimer.scheduleAtFixedDelay(updateHelpText, 1, 3000);
+ }
+
+ @Override
+ protected void onPageLeave() {
+ if (!pageIsVisible)
+ return;
+ pageIsVisible = false;
+ state.upload.getUploadTask().removeListener(uploadListener);
+ if (!state.upload.getUploadTask().isCanceled()) {
+ MainWindow.addUpload(state);
+ }
+ }
+
+}