diff options
author | Victor Mocanu | 2016-10-31 12:32:12 +0100 |
---|---|---|
committer | Victor Mocanu | 2016-10-31 12:32:12 +0100 |
commit | 9c257071f181cce99d1fbbd1884fe2a676d3baec (patch) | |
tree | 1b27783c21cd6021089a01317d91d90e6e060010 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtDropDownConfigEditorWindow.java | |
parent | [client] improved shift handling for custom sat on login (diff) | |
download | tutor-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.java | 187 |
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 |