summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageUpdateWizard.java
blob: 2f2d73d0136d8e7d351ec50c3f742f81408534c0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
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";
	}

}