diff options
author | Simon Rettberg | 2015-10-01 20:00:27 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-10-01 20:00:27 +0200 |
commit | 1fd45f1ec985012179b26c8136eadf0c5ae3c2c8 (patch) | |
tree | 05f2c0065d4e837f896cd3b0668125e87a211806 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageUpdateWizard.java | |
parent | [client] Fix escape not working in message boxes (diff) | |
download | tutor-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.java | 74 |
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 |