summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageUpdateWizard.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/ImageUpdateWizard.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/ImageUpdateWizard.java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageUpdateWizard.java74
1 files changed, 60 insertions, 14 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageUpdateWizard.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageUpdateWizard.java
index 54b3af39..dc526f12 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageUpdateWizard.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageUpdateWizard.java
@@ -2,49 +2,95 @@ package org.openslx.dozmod.gui.wizard;
import java.awt.Window;
-import javax.swing.JOptionPane;
-
import org.apache.log4j.Logger;
+import org.apache.thrift.TException;
import org.openslx.bwlp.thrift.iface.ImageDetailsRead;
import org.openslx.bwlp.thrift.iface.ImageVersionWrite;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.gui.helper.UiFeedback;
import org.openslx.dozmod.gui.wizard.page.ImageUploadPage;
+import org.openslx.dozmod.gui.wizard.page.ImageUploadSummaryPage;
import org.openslx.dozmod.state.UploadWizardState;
import org.openslx.dozmod.thrift.ThriftActions;
+import org.openslx.dozmod.thrift.ThriftError;
+import org.openslx.dozmod.thrift.UploadInitiator.GotUploadTokenCallback;
+import org.openslx.util.QuickTimer;
+import org.openslx.util.QuickTimer.Task;
@SuppressWarnings("serial")
public class ImageUpdateWizard extends Wizard implements UiFeedback {
private final static Logger LOGGER = Logger.getLogger(ImageCreationWizard.class);
- private final UploadWizardState uploadWizardState = new UploadWizardState();
-
+ private final UploadWizardState state = new UploadWizardState();
+
protected ImageUploadPage imageUploadPage;
+
public ImageUpdateWizard(final Window parent, final ImageDetailsRead image) {
super(parent);
-
- imageUploadPage = new ImageUploadPage(this, uploadWizardState, image);
+
+ imageUploadPage = new ImageUploadPage(this, state, image);
addPage(imageUploadPage);
}
@Override
- public void performFinish() {
- boolean ret = ThriftActions.updateImageVersion(JOptionPane.getFrameForComponent(this),
- uploadWizardState.transferInformation.getToken(),
- new ImageVersionWrite(uploadWizardState.isRestricted));
- if (!ret) {
- Gui.showMessageBox(this, "Konnte Metadaten der Version nicht am Satelliten speichern!", MessageType.INFO, null, null);
+ protected boolean wantFinish() {
+ try {
+ ThriftActions.updateImageVersion(state.upload.getToken(), new ImageVersionWrite(
+ state.isRestricted));
+ } catch (TException e) {
+ ThriftError.showMessage(null, LOGGER, e, "Serverseitiger Fehler beim Speichern der Image-Daten.");
+ return false;
+ }
+ state.upload.startUpload(new GotUploadTokenCallback() {
+ @Override
+ public void fire() {
+ // push version data
+ try {
+ ThriftActions.updateImageVersion(state.upload.getToken(), new ImageVersionWrite(
+ state.isRestricted));
+ } catch (TException e) {
+ if (state.isRestricted) {
+ Gui.showMessageBox(null, "Unerwarteter Fehler beim Setzen der Option"
+ + " 'Enthält lizenzpflichtige Software' für diese Virtuelle Maschine.",
+ MessageType.WARNING, LOGGER, e);
+ }
+ }
+ }
+ });
+ return true;
+ }
+
+ @Override
+ public WizardPage performFinish() {
+ return new ImageUploadSummaryPage(this, state, false);
+ }
+
+ @Override
+ protected boolean onCancelRequest() {
+ if (state.uuid == null)
+ return true;
+ boolean confirmed = Gui.showMessageBox(this, "Möchten Sie den Vorgang wirklich abbrechen?",
+ MessageType.QUESTION_YESNO, null, null);
+ if (confirmed && state.upload != null) {
+ QuickTimer.scheduleOnce(new Task() {
+ @Override
+ public void fire() {
+ state.upload.cancelError();
+ }
+ });
}
+ return confirmed;
}
+
@Override
public boolean wantConfirmQuit() {
- return uploadWizardState.transferInformation != null;
+ return state.upload != null;
}
@Override
public void escapePressed() {
- dispose();
+ doCancel();
}
@Override