diff options
author | Victor Mocanu | 2018-04-16 16:12:42 +0200 |
---|---|---|
committer | Simon Rettberg | 2018-04-16 16:12:42 +0200 |
commit | ebd9d933431fdf2cd8cc2da2720a0be8362c0849 (patch) | |
tree | fac61f345ba6117e580d22eed889ace224068636 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window | |
parent | [server] Calculate DNBD3-CRC32 list of incoming transfers and dump to disk (diff) | |
download | tutor-module-ebd9d933431fdf2cd8cc2da2720a0be8362c0849.tar.gz tutor-module-ebd9d933431fdf2cd8cc2da2720a0be8362c0849.tar.xz tutor-module-ebd9d933431fdf2cd8cc2da2720a0be8362c0849.zip |
[*] Add virtualbox support
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window')
4 files changed, 113 insertions, 54 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java index 517d324d..cfcad22b 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java @@ -67,6 +67,7 @@ import org.openslx.sat.thrift.version.Feature; import org.openslx.thrifthelper.ThriftManager; import org.openslx.util.QuickTimer; import org.openslx.util.QuickTimer.Task; +import org.openslx.util.ThriftUtil; import org.openslx.util.Util; /** @@ -383,6 +384,7 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe } catch (TException e) { LOGGER.error("Failed to retrieve virtualizer config for image version " + "'" + image.latestVersionId + ", see trace: ", e); + return; } Gui.asyncExec(new Runnable() { @Override @@ -391,7 +393,16 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe Gui.showMessageBox("Konnte VM-Konfiguration nicht abrufen.", MessageType.ERROR, LOGGER, null); return; } - VirtDropDownConfigEditorWindow.open(me, actionHandler, selected.versionId, machineDescription); + + //TODO is this a hack? + String tmp = ThriftUtil.byteBufferToString(machineDescription); + if (tmp.startsWith("qemu")) { + VirtConfigEditorWindow.open(me, actionHandler, selected.versionId, + machineDescription, tmp); + } else { + VirtDropDownConfigEditorWindow.open(me, actionHandler, selected.versionId, + machineDescription); + } } }); } @@ -481,7 +492,7 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe return; } } - + } // let the user confirm or abort if (!Gui.showMessageBox("Wollen Sie diese VM wirklich landesweit veröffentlichen?", @@ -646,7 +657,7 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe refresh(true); } } - + /******************************************************************************** diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtConfigEditorWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtConfigEditorWindow.java index 301b068f..349bf9b1 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtConfigEditorWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtConfigEditorWindow.java @@ -3,6 +3,7 @@ package org.openslx.dozmod.gui.window; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.io.IOException; import java.nio.ByteBuffer; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; @@ -21,8 +22,8 @@ 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.VmMetaData; import org.openslx.util.vm.VmwareConfig; -import org.openslx.util.vm.VmwareMetaData; @SuppressWarnings("serial") public class VirtConfigEditorWindow extends VirtConfigEditorWindowLayout implements UiFeedback { @@ -84,10 +85,19 @@ public class VirtConfigEditorWindow extends VirtConfigEditorWindowLayout impleme Charset cs = VmwareConfig.getCharset(uiBytes, uiBytes.length); // cs is now either the detected encoding, or latin1 as a default uiBytes = userInput.getBytes(cs); - // now we should have the correct bytes.... - VmwareMetaData meta = new VmwareMetaData(MetaDataCache.getOperatingSystems(), uiBytes, - uiBytes.length); - byte[] uiBytesFiltered = meta.getDefinitionArray(); + // now we should have the correct bytes... + VmMetaData<?,?,?,?> metaCandidate = null; + try { + metaCandidate = VmMetaData.getInstance(MetaDataCache.getOperatingSystems(), uiBytes, + uiBytes.length); + } catch (IOException e) { + e.printStackTrace(); + } + if ( metaCandidate == null ) { + dispose(); + } + + byte[] uiBytesFiltered = metaCandidate.getDefinitionArray(); final String userInputFiltered = new String(uiBytesFiltered, cs); // So here we have: // - uiBytes is the unfiltered user input 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 index b68a575d..c151f505 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtDropDownConfigEditorWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtDropDownConfigEditorWindow.java @@ -3,6 +3,7 @@ package org.openslx.dozmod.gui.window; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.io.IOException; import java.nio.ByteBuffer; import org.openslx.dozmod.gui.Gui; @@ -13,15 +14,15 @@ 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.EthernetDevType; -import org.openslx.util.vm.VmwareMetaData.HWVersion; -import org.openslx.util.vm.VmwareMetaData.SoundCardType; +import org.openslx.util.vm.VmMetaData; +import org.openslx.util.vm.VmMetaData.DDAcceleration; +import org.openslx.util.vm.VmMetaData.EthernetDevType; +import org.openslx.util.vm.VmMetaData.HWVersion; +import org.openslx.util.vm.VmMetaData.SoundCardType; @SuppressWarnings("serial") -public class VirtDropDownConfigEditorWindow extends VirtDropDownConfigEditorWindowLayout - implements UiFeedback { +public class VirtDropDownConfigEditorWindow extends VirtDropDownConfigEditorWindowLayout implements + UiFeedback { public interface VirtConfigChanged { public void virtConfigChanged(String newVmx); @@ -30,7 +31,7 @@ public class VirtDropDownConfigEditorWindow extends VirtDropDownConfigEditorWind private final String imageVersionId; private final String originalMachineDescription; private final VirtDropDownConfigEditorWindow me = this; - private final VmwareMetaData meta; + private final VmMetaData<?, ?, ?, ?> meta; private final ImageDetailsActions actionHandler; protected VirtDropDownConfigEditorWindow(Window modalParent, final ImageDetailsActions actionHandler, @@ -41,8 +42,23 @@ public class VirtDropDownConfigEditorWindow extends VirtDropDownConfigEditorWind this.imageVersionId = imageVersionId; // and now for the meta data + VmMetaData<?, ?, ?, ?> metaCandidate = null; byte[] machineData = ThriftUtil.unwrapByteBuffer(machineDescription); - meta = new VmwareMetaData(MetaDataCache.getOperatingSystems(), machineData, machineData.length); + try { + metaCandidate = VmMetaData.getInstance(MetaDataCache.getOperatingSystems(), machineData, + machineData.length); + } catch (IOException e1) { + e1.printStackTrace(); + } + if (metaCandidate == null) { + dispose(); + } + meta = metaCandidate; + + initializeSoundBox(meta.getSupportedSoundCards()); + initializeDDABox(meta.getSupportedDDAccs()); + initializeHWVersBox(meta.getSupportedHWVersions()); + initializeEDTBox(meta.getSupportedEthernetDevices()); //set the initial state of the buttons setTheBoxes(meta); @@ -118,6 +134,11 @@ public class VirtDropDownConfigEditorWindow extends VirtDropDownConfigEditorWind this.originalMachineDescription = ThriftUtil.byteBufferToString(machineDescription); btnSave.setEnabled(false); + //TODO sort this hack out...and make it work + /* + if ( meta instanceof QemuMetaData) { + this.btnMore.doClick(); + } */ } protected void checkForChange() { @@ -133,15 +154,22 @@ public class VirtDropDownConfigEditorWindow extends VirtDropDownConfigEditorWind /* 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); - EthernetDevType E0VD = m.getEthernetDevType(0); - cboE0VirtDev.setSelectedItem(E0VD); + private void setTheBoxes(VmMetaData<?, ?, ?, ?> m) { + try { + SoundCardType SCT = m.getSoundCard(); + cboSound.setSelectedItem(SCT); + DDAcceleration DDA = m.getDDAcceleration(); + cbo3DAcceleration.setSelectedItem(DDA); + HWVersion HWV = m.getHWVersion(); + cboHWVersion.setSelectedItem(HWV); + EthernetDevType E0VD = m.getEthernetDevType(0); + cboE0VirtDev.setSelectedItem(E0VD); + } catch (IllegalArgumentException e) { + // TODO improve user message + Gui.showMessageBox("Sie haben beim letzten Konfigurieren \n" + + "einen falschen Eintrag eingespeichert. \n" + "Die VM wird nicht starten!", + MessageType.WARNING, null, e); + } } private void saveClicked() { @@ -184,4 +212,4 @@ public class VirtDropDownConfigEditorWindow extends VirtDropDownConfigEditorWind public void escapePressed() { safeClose(); } -}
\ No newline at end of file +} diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/VirtDropDownConfigEditorWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/VirtDropDownConfigEditorWindowLayout.java index db79f7d0..28dd5e4e 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/VirtDropDownConfigEditorWindowLayout.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/VirtDropDownConfigEditorWindowLayout.java @@ -4,6 +4,7 @@ import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Insets; import java.awt.Window; +import java.util.List; import javax.swing.BorderFactory; import javax.swing.Box; @@ -21,10 +22,10 @@ import org.openslx.dozmod.gui.control.ComboBox; import org.openslx.dozmod.gui.control.ComboBox.ComboBoxRenderer; import org.openslx.dozmod.gui.control.WordWrapLabel; import org.openslx.dozmod.gui.helper.GridManager; -import org.openslx.util.vm.VmwareMetaData.DDAcceleration; -import org.openslx.util.vm.VmwareMetaData.EthernetDevType; -import org.openslx.util.vm.VmwareMetaData.HWVersion; -import org.openslx.util.vm.VmwareMetaData.SoundCardType; +import org.openslx.util.vm.VmMetaData.DDAcceleration; +import org.openslx.util.vm.VmMetaData.EthernetDevType; +import org.openslx.util.vm.VmMetaData.HWVersion; +import org.openslx.util.vm.VmMetaData.SoundCardType; @SuppressWarnings("serial") public class VirtDropDownConfigEditorWindowLayout extends JDialog { @@ -64,7 +65,6 @@ public class VirtDropDownConfigEditorWindowLayout extends JDialog { * ComboBoxes - one for each device */ - // SoundBox cboSound = new ComboBox<>(new ComboBoxRenderer<SoundCardType>() { @Override public String renderItem(SoundCardType item) { @@ -72,10 +72,6 @@ public class VirtDropDownConfigEditorWindowLayout extends JDialog { } }); - for (SoundCardType i : SoundCardType.values()) { - cboSound.addItem(i); - } - // 3D accelerationBox cbo3DAcceleration = new ComboBox<>(new ComboBoxRenderer<DDAcceleration>() { @Override @@ -84,10 +80,6 @@ public class VirtDropDownConfigEditorWindowLayout extends JDialog { } }); - for (DDAcceleration i : DDAcceleration.values()) { - cbo3DAcceleration.addItem(i); - } - // HardwareVersioBox cboHWVersion = new ComboBox<>(new ComboBoxRenderer<HWVersion>() { @Override @@ -96,10 +88,6 @@ public class VirtDropDownConfigEditorWindowLayout extends JDialog { } }); - for (HWVersion i : HWVersion.values()) { - cboHWVersion.addItem(i); - } - // HardwareVersioBox cboE0VirtDev = new ComboBox<>(new ComboBoxRenderer<EthernetDevType>() { @Override @@ -108,10 +96,6 @@ public class VirtDropDownConfigEditorWindowLayout extends JDialog { } }); - for (EthernetDevType i : EthernetDevType.values()) { - cboE0VirtDev.addItem(i); - } - pnlEditor = new JEditorPane("text/plain", null); pnlScrollPane = new JScrollPane(pnlEditor, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); @@ -130,10 +114,10 @@ public class VirtDropDownConfigEditorWindowLayout extends JDialog { grid.add(new JLabel("Netzwerkkarte")).fill(true, false).expand(false, false); grid.add(cboE0VirtDev).fill(true, false).expand(true, false); grid.nextRow(); - + grid.add(Box.createVerticalGlue(), 2).expand(true, true); grid.nextRow(); - + JPanel buttonPane = new JPanel(); buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.LINE_AXIS)); buttonPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); @@ -149,10 +133,36 @@ public class VirtDropDownConfigEditorWindowLayout extends JDialog { grid.add(buttonPane, 2).fill(true, false).expand(true, false); grid.finish(false); - Dimension size = Gui.getScaledDimension(550, 300); - setMinimumSize(size); - setMaximumSize(size); - setSize(size); + setPreferredSize(Gui.getScaledDimension(600, 400)); + setMinimumSize(Gui.getScaledDimension(450, 350)); Gui.centerShellOverShell(modalParent, this); } + + // SoundBox + public void initializeSoundBox(List<SoundCardType> list) { + for (SoundCardType i : list) { + cboSound.addItem(i); + } + } + + // 3 D acceleration + public void initializeDDABox(List<DDAcceleration> list) { + for (DDAcceleration i : list) { + cbo3DAcceleration.addItem(i); + } + } + + // Hardware version + public void initializeHWVersBox(List<HWVersion> list) { + for (HWVersion i : list) { + cboHWVersion.addItem(i); + } + } + + // Ethernet Device type + public void initializeEDTBox(List<EthernetDevType> list) { + for (EthernetDevType i : list) { + cboE0VirtDev.addItem(i); + } + } } |