package org.openslx.dozmod.gui.wizard; import java.awt.Window; 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.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 state = new UploadWizardState(); protected ImageUploadPage imageUploadPage; public ImageUpdateWizard(final Window parent, final ImageDetailsRead image) { super(parent); imageUploadPage = new ImageUploadPage(this, state, image); addPage(imageUploadPage); } @Override protected boolean wantFinish() { QuickTimer.scheduleOnce(new Task() { @Override public void fire() { 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); } } } }); } }, 500); 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 state.upload != null; } @Override public void escapePressed() { doCancel(); } @Override public String getWindowTitle() { return "Neue VM-Version"; } }