summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtDropDownConfigEditorWindow.java
diff options
context:
space:
mode:
authorVictor Mocanu2016-10-31 12:32:12 +0100
committerVictor Mocanu2016-10-31 12:32:12 +0100
commit9c257071f181cce99d1fbbd1884fe2a676d3baec (patch)
tree1b27783c21cd6021089a01317d91d90e6e060010 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtDropDownConfigEditorWindow.java
parent[client] improved shift handling for custom sat on login (diff)
downloadtutor-module-9c257071f181cce99d1fbbd1884fe2a676d3baec.tar.gz
tutor-module-9c257071f181cce99d1fbbd1884fe2a676d3baec.tar.xz
tutor-module-9c257071f181cce99d1fbbd1884fe2a676d3baec.zip
[client] added simple vmx editor
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtDropDownConfigEditorWindow.java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtDropDownConfigEditorWindow.java187
1 files changed, 187 insertions, 0 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtDropDownConfigEditorWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtDropDownConfigEditorWindow.java
new file mode 100644
index 00000000..0bc0e020
--- /dev/null
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtDropDownConfigEditorWindow.java
@@ -0,0 +1,187 @@
+package org.openslx.dozmod.gui.window;
+
+import java.awt.Window;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.nio.ByteBuffer;
+
+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.window.layout.VirtDropDownConfigEditorWindowLayout;
+import org.openslx.dozmod.thrift.ImageDetailsActions;
+import org.openslx.dozmod.thrift.ImageDetailsActions.VirtConfCallback;
+import org.openslx.dozmod.thrift.cache.MetaDataCache;
+import org.openslx.util.ThriftUtil;
+import org.openslx.util.vm.VmwareMetaData;
+import org.openslx.util.vm.VmwareMetaData.DDAcceleration;
+import org.openslx.util.vm.VmwareMetaData.E0VirtDev;
+import org.openslx.util.vm.VmwareMetaData.HWVersion;
+import org.openslx.util.vm.VmwareMetaData.SoundCardType;
+
+@SuppressWarnings("serial")
+public class VirtDropDownConfigEditorWindow extends VirtDropDownConfigEditorWindowLayout
+ implements UiFeedback {
+
+ public interface VirtConfigChanged {
+ public void virtConfigChanged(String newVmx);
+ }
+
+ private final String imageVersionId;
+ private final String originalMachineDescription;
+ private final VirtDropDownConfigEditorWindow me = this;
+ private final VmwareMetaData meta;
+ private final ImageDetailsActions actionHandler;
+
+ protected VirtDropDownConfigEditorWindow(Window modalParent, final ImageDetailsActions actionHandler,
+ final String imageVersionId, final ByteBuffer machineDescription) {
+ super(modalParent);
+
+ this.actionHandler = actionHandler;
+ this.imageVersionId = imageVersionId;
+
+ // and now for the meta data
+ meta = new VmwareMetaData(MetaDataCache.getOperatingSystems(), machineDescription.array(),
+ machineDescription.array().length);
+
+ //set the initial state of the buttons
+ setTheBoxes(meta);
+
+ // listener for the sound card drop box
+ cboSound.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ SoundCardType selected = (SoundCardType) cboSound.getSelectedItem();
+ meta.setSoundCard(selected);
+ checkForChange();
+ }
+ });
+
+ // listener for the 3Dacceleration drop box
+ cbo3DAcceleration.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ DDAcceleration selected = (DDAcceleration) cbo3DAcceleration.getSelectedItem();
+ meta.setDDAcceleration(selected);
+ checkForChange();
+ }
+ });
+
+ // listener for the Hardware version drop box
+ cboHWVersion.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ HWVersion selected = (HWVersion) cboHWVersion.getSelectedItem();
+ meta.setHWVersion(selected);
+ checkForChange();
+ }
+ });
+
+ // listener for the Virtual Ethernet device drop box
+ cboE0VirtDev.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ E0VirtDev selected = (E0VirtDev) cboE0VirtDev.getSelectedItem();
+ meta.setE0VirtDev(selected);
+ checkForChange();
+ }
+ });
+
+ // listener for the save button
+ btnSave.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ saveClicked();
+ }
+ });
+
+ // listener for the cancel button
+ btnCancel.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ safeClose();
+ }
+ });
+
+ //listener for the profi button
+ btnMore.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (Gui.showMessageBox(me,
+ "Bitte beachten Sie: dieser Modus ist für erfahrene Nutzer geeignet. \n Möchten Sie wirklich diesen Modus fortsetzen?",
+ MessageType.QUESTION_YESNO, null, null))
+ me.dispose();
+ VirtConfigEditorWindow.open(me, actionHandler, imageVersionId,
+ ByteBuffer.wrap(meta.getDefinitionArray()), originalMachineDescription);
+
+ }
+ });
+
+ this.originalMachineDescription = ThriftUtil.byteBufferToString(machineDescription);
+ btnSave.setEnabled(false);
+ }
+
+ protected void checkForChange() {
+ if (!originalMachineDescription
+ .equals(ThriftUtil.byteBufferToString(ByteBuffer.wrap(meta.getDefinitionArray())))) {
+ btnSave.setEnabled(true);
+ } else {
+ btnSave.setEnabled(false);
+ }
+
+ }
+
+ /* setting the boxes to their initial value...value is read from the given metaData
+ * @param: given VmwareMetaData
+ */
+ private void setTheBoxes(VmwareMetaData m) {
+ SoundCardType SCT = m.getSoundCard();
+ cboSound.setSelectedItem(SCT);
+ DDAcceleration DDA = m.getDDAcceleration();
+ cbo3DAcceleration.setSelectedItem(DDA);
+ HWVersion HWV = m.getHWVersion();
+ cboHWVersion.setSelectedItem(HWV);
+ E0VirtDev E0VD = m.getE0VirtDev();
+ cboE0VirtDev.setSelectedItem(E0VD);
+ }
+
+ private void saveClicked() {
+ // we have a valid vmx or the user accepted to push the filtered input
+ actionHandler.setVirtualizerConfig(imageVersionId, ByteBuffer.wrap(meta.getDefinitionArray()),
+ new VirtConfCallback() {
+ @Override
+ public void virtConfCallback(boolean success) {
+ if (success) {
+ dispose();
+ }
+ }
+ });
+ }
+
+ public static void open(Window modalParent, final ImageDetailsActions handler,
+ final String imageVersionId, final ByteBuffer machineDescription) {
+ VirtDropDownConfigEditorWindow win = new VirtDropDownConfigEditorWindow(modalParent, handler,
+ imageVersionId, machineDescription);
+ win.setVisible(true);
+ }
+
+ private void safeClose() {
+ if (originalMachineDescription
+ .equals(ThriftUtil.byteBufferToString(ByteBuffer.wrap(meta.getDefinitionArray())))
+ || Gui.showMessageBox(me,
+ "Wollen Sie wirklich abbrechen?\n" + "Ihre Änderungen werden verworfen.",
+ MessageType.QUESTION_YESNO, null, null))
+ dispose();
+ }
+
+ @Override
+ public boolean wantConfirmQuit() {
+ return !originalMachineDescription
+ .equals(ThriftUtil.byteBufferToString(ByteBuffer.wrap(meta.getDefinitionArray())));
+ }
+
+ @Override
+ public void escapePressed() {
+ safeClose();
+ }
+} \ No newline at end of file