diff --git a/.DS_Store b/.DS_Store index d1941f4..175af0e 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/.vscode/launch.json b/.vscode/launch.json index d38ccd3..ccd34a8 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,6 +4,13 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ + { + "type": "java", + "name": "Launch Launcher", + "request": "launch", + "mainClass": "com.lucaoonk.virsh_gui.Launcher", + "projectName": "virsh_gui" + }, { "type": "java", "name": "Launch ApplicationSettings", diff --git a/pom.xml b/pom.xml index 90c65b1..76a7e76 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.lucaoonk.virsh_gui virsh_gui jar - 0.3.2 + 0.3.3 virsh_gui http://maven.apache.org diff --git a/src/main/java/com/lucaoonk/virsh_gui/.DS_Store b/src/main/java/com/lucaoonk/virsh_gui/.DS_Store index 3dbe702..55e258f 100644 Binary files a/src/main/java/com/lucaoonk/virsh_gui/.DS_Store and b/src/main/java/com/lucaoonk/virsh_gui/.DS_Store differ diff --git a/src/main/java/com/lucaoonk/virsh_gui/Backend/Controllers/DOMController.java b/src/main/java/com/lucaoonk/virsh_gui/Backend/Controllers/DOMController.java index a85e1e9..930b5ed 100644 --- a/src/main/java/com/lucaoonk/virsh_gui/Backend/Controllers/DOMController.java +++ b/src/main/java/com/lucaoonk/virsh_gui/Backend/Controllers/DOMController.java @@ -14,7 +14,7 @@ public static void defineDomain(String domainLocation, String domainName, Contex if(domainLocation.equals("")){ if(context.defaultSaveLocation.equals("")){ - Runtime.getRuntime().exec("/usr/local/bin/virsh define "+System.getProperty("user.home")+"/vms/"+domainName+"/"+domainName+".xml"); + Runtime.getRuntime().exec("/usr/local/bin/virsh define "+context.getDefaultSaveLocation()+domainName+"/"+domainName+".xml"); }else{ diff --git a/src/main/java/com/lucaoonk/virsh_gui/Backend/Controllers/VMController.java b/src/main/java/com/lucaoonk/virsh_gui/Backend/Controllers/VMController.java index 5bde24c..10820c8 100644 --- a/src/main/java/com/lucaoonk/virsh_gui/Backend/Controllers/VMController.java +++ b/src/main/java/com/lucaoonk/virsh_gui/Backend/Controllers/VMController.java @@ -1,5 +1,6 @@ package com.lucaoonk.virsh_gui.Backend.Controllers; +import java.io.File; import java.io.IOException; import java.util.List; @@ -38,6 +39,51 @@ public void stopVM(VM vm){ } + public static String createVMDiskthread(String vmDomain, Context context, String size, String diskFileLocation) + { + final String vmDomain2 = vmDomain; + final Context context2 = context; + final String sizeString = size; + final String diskFileLocation2 = diskFileLocation; + final String defeninitivePath; + if(diskFileLocation2.equals("")){ + + defeninitivePath= context2.getDefaultSaveLocation()+vmDomain2+"/"+ vmDomain2+".qcow2"; + + }else{ + defeninitivePath= diskFileLocation2+ vmDomain2+".qcow2"; + + } + + + File myFile = new File(defeninitivePath); + myFile.getParentFile().mkdirs(); + + // define what thread will do here + if(diskFileLocation2.equals("")){ + try { + + Process process = Runtime.getRuntime().exec("/usr/local/bin/qemu-img create -f qcow2 "+context2.getDefaultSaveLocation()+vmDomain2+"/"+ vmDomain2+".qcow2 +"+sizeString); + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + }else{ + try { + Process process = Runtime.getRuntime().exec("/usr/local/bin/qemu-img create -f qcow2 "+diskFileLocation2+ vmDomain2+".qcow2 +"+sizeString); + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + return defeninitivePath; + + } + private static void startVMthread(VM vm, Context context) { final VM vmToStart = vm; diff --git a/src/main/java/com/lucaoonk/virsh_gui/Backend/Objects/Context.java b/src/main/java/com/lucaoonk/virsh_gui/Backend/Objects/Context.java index 672ef52..850a56f 100644 --- a/src/main/java/com/lucaoonk/virsh_gui/Backend/Objects/Context.java +++ b/src/main/java/com/lucaoonk/virsh_gui/Backend/Objects/Context.java @@ -20,8 +20,9 @@ public class Context { public MainContent mainContent; public JFrame mainJFrame; public String defaultSaveLocation; - private static final String versionString = "0.3.2"; + private static final String versionString = "0.3.3"; public Boolean checkForUpdates; + private String applicationDefaultSaveLocation; public Context(){ @@ -30,13 +31,14 @@ public Context(){ private void initDefaults(){ this.checkForUpdates = true; - this.defaultSaveLocation= ""; + this.defaultSaveLocation=System.getProperty("user.home")+"/vms/"; + this.applicationDefaultSaveLocation=System.getProperty("user.home")+"/vms/"; } public void updateVMList(ArrayList vmList){ this.vmList= vmList; - defaultSaveLocation= ""; + // defaultSaveLocation= ""; this.currentSelectedVM = vmList.get(0); } @@ -76,4 +78,17 @@ public void refresh() { public static String getVersion(){ return versionString; } + + public String getDefaultSaveLocation() { + + if(defaultSaveLocation.equals("")){ + + return applicationDefaultSaveLocation; + + }else{ + + return defaultSaveLocation; + } + + } } diff --git a/src/main/java/com/lucaoonk/virsh_gui/Backend/Objects/VM.java b/src/main/java/com/lucaoonk/virsh_gui/Backend/Objects/VM.java index a6bb0e0..5515fa8 100644 --- a/src/main/java/com/lucaoonk/virsh_gui/Backend/Objects/VM.java +++ b/src/main/java/com/lucaoonk/virsh_gui/Backend/Objects/VM.java @@ -100,5 +100,41 @@ public ArrayList getForwardedPorts(){ return this.portsForwarded; } + public String vmDetailsTable(){ + String vmDetails = ""; + vmDetails+= ""; + vmDetails+= ""; + vmDetails+= ""; + double ramAmount = 0; + if(Integer.parseInt(this.getRam()) > 1024){ + ramAmount = Integer.parseInt(this.getRam()) * 1.024E-6; + }else{ + ramAmount = Integer.parseInt(this.getRam()); + } + vmDetails+= ""; + + + String disksString = ""; + int amountOfDisks = 0; + for (Device dev : this.getDevices()) { + if(dev.getClass().getName().equals("com.lucaoonk.virsh_gui.Backend.Objects.Disk")){ + amountOfDisks+=1; + Disk disk = (Disk) dev; + disksString+= disk.device + ":"+"
"+" Location: "+ disk.source + "
 Type: "+ disk.driver + "

"; + + } + + } + vmDetails+= ""; + + String forwardedPorts = ""; + for (String port : this.getForwardedPorts()) { + forwardedPorts+= port + "
"; + } + vmDetails+= ""; + + vmDetails+= "
PropertyValue
UUID:"+this.getUUID()+"
vnc:"+this.vncIP+":"+this.vncPort+"
CPU's:"+this.getcpus()+"
Ram in GB:"+ramAmount+"
Attached Disks ("+amountOfDisks+") :"+disksString+"
Forwarded Ports ("+this.getForwardedPorts().size()+")
Protocol::External Port:Internal Port :
"+forwardedPorts+"
"; + return vmDetails; + } } diff --git a/src/main/java/com/lucaoonk/virsh_gui/Backend/Processors/VMDOMCreatorProcessor.java b/src/main/java/com/lucaoonk/virsh_gui/Backend/Processors/VMDOMCreatorProcessor.java index 5cc979c..7b5785b 100644 --- a/src/main/java/com/lucaoonk/virsh_gui/Backend/Processors/VMDOMCreatorProcessor.java +++ b/src/main/java/com/lucaoonk/virsh_gui/Backend/Processors/VMDOMCreatorProcessor.java @@ -122,7 +122,7 @@ public static void createNewVMDomain(VMCreationObject vmCreationObject, String s }else{ - File myFile = new File(System.getProperty ("user.home")+"/vms/"+vmCreationObject.vmName+"/"+vmCreationObject.vmName+".xml"); + File myFile = new File(context.getDefaultSaveLocation()+vmCreationObject.vmName+"/"+vmCreationObject.vmName+".xml"); myFile.getParentFile().mkdirs(); StreamResult file = new StreamResult(myFile); @@ -300,7 +300,7 @@ private static Node devicesNode(Document doc, VMCreationObject vmCreationObject, for (Device device : vmCreationObject.devices) { - if(device.getClass().getName().equals("Backend.Objects.Disk")){ + if(device.getClass().getName().equals("com.lucaoonk.virsh_gui.Backend.Objects.Disk")){ Disk disk = (Disk) device; diff --git a/src/main/java/com/lucaoonk/virsh_gui/Launcher.java b/src/main/java/com/lucaoonk/virsh_gui/Launcher.java index 0a2ef85..d684080 100644 --- a/src/main/java/com/lucaoonk/virsh_gui/Launcher.java +++ b/src/main/java/com/lucaoonk/virsh_gui/Launcher.java @@ -3,8 +3,6 @@ import java.io.IOException; import java.security.NoSuchAlgorithmException; import javax.swing.SwingUtilities; -import javax.swing.UIManager; -import javax.swing.UnsupportedLookAndFeelException; import com.lucaoonk.virsh_gui.ui.MainFrame; @@ -19,14 +17,6 @@ public void run() { System.setProperty("apple.laf.useScreenMenuBar", "true"); System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Virsh GUI"); - try { - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - } catch (ClassNotFoundException | InstantiationException | IllegalAccessException - | UnsupportedLookAndFeelException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - w1.init(); try { w1.showMainFrame(); diff --git a/src/main/java/com/lucaoonk/virsh_gui/UpdateChecker/UpdateChecker.java b/src/main/java/com/lucaoonk/virsh_gui/UpdateChecker/UpdateChecker.java index 3a5c20d..ad908e9 100644 --- a/src/main/java/com/lucaoonk/virsh_gui/UpdateChecker/UpdateChecker.java +++ b/src/main/java/com/lucaoonk/virsh_gui/UpdateChecker/UpdateChecker.java @@ -72,12 +72,8 @@ protected Boolean doInBackground() { try { HttpResponse response = Unirest.get(urlToCheck).asJson(); JsonNode responseBody = response.getBody(); - System.out.println(responseBody); if (response.isSuccess()) { - - System.out.println(responseBody); - String latestVersion = responseBody.getObject().get("tag_name").toString(); System.out.println("Latest version: "+ latestVersion); diff --git a/src/main/java/com/lucaoonk/virsh_gui/ui/ScrollableVMList.java b/src/main/java/com/lucaoonk/virsh_gui/ui/ScrollableVMList.java index 8fa195c..3fdf91b 100644 --- a/src/main/java/com/lucaoonk/virsh_gui/ui/ScrollableVMList.java +++ b/src/main/java/com/lucaoonk/virsh_gui/ui/ScrollableVMList.java @@ -98,8 +98,10 @@ public void actionPerformed(ActionEvent e) { } if(e.getSource().equals(this.addNewVMButton)){ - VMConfigurator vmConfigurator = new VMConfigurator(context); - vmConfigurator.show(); + // VMConfigurator vmConfigurator = new VMConfigurator(context); + // vmConfigurator.show(); + VMConfiguratorTabbedPane configurator = new VMConfiguratorTabbedPane(context); + configurator.show(); } if(e.getSource().equals(this.showVMInfoButton)){ diff --git a/src/main/java/com/lucaoonk/virsh_gui/ui/VMConfigurator.java b/src/main/java/com/lucaoonk/virsh_gui/ui/VMConfigurator.java index caf96bd..457f750 100644 --- a/src/main/java/com/lucaoonk/virsh_gui/ui/VMConfigurator.java +++ b/src/main/java/com/lucaoonk/virsh_gui/ui/VMConfigurator.java @@ -24,7 +24,10 @@ public class VMConfigurator extends JDialog{ private String[] diskTargets = {"vda", "vdb", "vdc", "vdd", "vde", "vdf", "vdg", "vdh", "vdi"}; private String[] cdromTargets = {"sda", "sdb", "sdc", "sdd", "sde", "sdf", "sdg", "sdh", "sdi"}; private String[] archs = {"x86_64", "arm", "i386", "m68k", "ppc", "ppc64"}; - + private String htmlStart = ""; + private String htmlEnd = ""; + private String boldStart = ""; + private String boldlEnd = ""; /** * */ @@ -44,47 +47,47 @@ public void show(){ d.setLayout(new GridLayout(12,2)); - d.add(new JLabel("VM location:")); + d.add(new JLabel(htmlStart+boldStart+"VM location"+boldlEnd+":
if empty it wil be placed in the set default folder: "+context.getDefaultSaveLocation()+htmlEnd)); final JTextField vmLocation = new JTextField(); d.add(vmLocation); - d.add(new JLabel("VM Name:")); + d.add(new JLabel(htmlStart+boldStart+"VM Name:"+boldlEnd+htmlEnd)); final JTextField vmName = new JTextField(); d.add(vmName); - d.add(new JLabel("VM Cpu's:")); + d.add(new JLabel(htmlStart+boldStart+"VM Cpu's:"+boldlEnd+htmlEnd)); final JTextField vmCpus = new JTextField(); d.add(vmCpus); - d.add(new JLabel("Ram in GB:")); + d.add(new JLabel(htmlStart+boldStart+"Ram in GB:"+boldlEnd+htmlEnd)); final JTextField vmRam = new JTextField(); d.add(vmRam); final JComboBox vmArch = new JComboBox(archs); - d.add(new JLabel("VM arch:")); + d.add(new JLabel(htmlStart+boldStart+"VM arch:"+boldlEnd+htmlEnd)); d.add(vmArch); final JComboBox diskTarget = new JComboBox(diskTargets); - d.add(new JLabel("Disk device target:")); + d.add(new JLabel(htmlStart+boldStart+"Disk device target:"+boldlEnd+htmlEnd)); d.add(diskTarget); - d.add(new JLabel("Disk file location:")); + d.add(new JLabel(htmlStart+boldStart+"Disk file location:"+boldlEnd+htmlEnd)); final JTextField diskFileLocation = new JTextField(); d.add(diskFileLocation); final JComboBox cdromTarget = new JComboBox(cdromTargets); - d.add(new JLabel("CDrom device target:")); + d.add(new JLabel(htmlStart+boldStart+"CDrom device target:"+boldlEnd+htmlEnd)); d.add(cdromTarget); - d.add(new JLabel("CDrom file location:")); + d.add(new JLabel(htmlStart+boldStart+"CDrom file location:"+boldlEnd+htmlEnd)); final JTextField cdromFileLocation = new JTextField(); d.add(cdromFileLocation); - d.add(new JLabel("VM arguments:")); + d.add(new JLabel(htmlStart+boldStart+"VM arguments:"+boldlEnd+htmlEnd)); final JTextField vmArguments = new JTextField(); d.add(vmArguments); - d.add(new JLabel("Forwarded ports:")); + d.add(new JLabel(htmlStart+boldStart+"Forwarded ports"+boldlEnd+":
format: protocol::external Port-:interal Port
e.g.: tcp::2222:22,tcp::8080-8081:80"+htmlEnd)); final JTextField vmForwardedPorts = new JTextField(); d.add(vmForwardedPorts); diff --git a/src/main/java/com/lucaoonk/virsh_gui/ui/VMConfiguratorTabbedPane.java b/src/main/java/com/lucaoonk/virsh_gui/ui/VMConfiguratorTabbedPane.java new file mode 100644 index 0000000..c276b7e --- /dev/null +++ b/src/main/java/com/lucaoonk/virsh_gui/ui/VMConfiguratorTabbedPane.java @@ -0,0 +1,307 @@ +package com.lucaoonk.virsh_gui.ui; + +import javax.swing.Action; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import javax.swing.JDialog; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTabbedPane; +import javax.swing.JTextField; +import javax.swing.UIManager; + +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; + +import com.lucaoonk.virsh_gui.Backend.Controllers.DOMController; +import com.lucaoonk.virsh_gui.Backend.Controllers.VMController; +import com.lucaoonk.virsh_gui.Backend.Objects.Context; +import com.lucaoonk.virsh_gui.Backend.Objects.Device; +import com.lucaoonk.virsh_gui.Backend.Objects.Disk; +import com.lucaoonk.virsh_gui.Backend.Objects.VM; +import com.lucaoonk.virsh_gui.Backend.Objects.VMCreationObject; +import com.lucaoonk.virsh_gui.Backend.Processors.VMDOMCreatorProcessor; + +public class VMConfiguratorTabbedPane implements ActionListener { + + /** + * + */ + private static final long serialVersionUID = 1L; + private Context context; + private JPanel generalPane; + private String[] diskTargets = {"vda", "vdb", "vdc", "vdd", "vde", "vdf", "vdg", "vdh", "vdi"}; + private String[] cdromTargets = {"sda", "sdb", "sdc", "sdd", "sde", "sdf", "sdg", "sdh", "sdi"}; + private String[] archs = {"x86_64", "arm", "i386", "m68k", "ppc", "ppc64"}; + private String htmlStart = ""; + private String htmlEnd = ""; + private String boldStart = ""; + private String boldlEnd = ""; + private JPanel finalPane; + private JDialog dialog; + + private JTextField vmName; + private JTextField vmRam; + private JTextField vmLocation; + private JPanel contentPane; + private JPanel advancedPane; + private JPanel disksPanel; + private JButton createVMButton; + private JComboBox vmArch; + private JTextField vmCpus; + private JTextField vmArguments; + private JTextField diskFileLocation; + private JComboBox cdromTarget; + private JTextField cdromFileLocation; + private JComboBox diskTarget; + private JTextField vmForwardedPorts; + private JCheckBox createNewDisk; + private JTextField newDiskSize; + + public VMConfiguratorTabbedPane(Context context){ + UIManager.put("TabbedPane.selected", Color.BLACK); + UIManager.put("TabbedPane.unselected", Color.BLACK); + + this.contentPane = new JPanel(); + contentPane.setLayout(new GridLayout(1,1)); + this.context = context; + final JDialog dialog = new JDialog(context.mainJFrame, "VM Configurator"); + this.dialog = dialog; + + this.generalPane = generalPane(); + this.finalPane = finalPane(); + this.advancedPane = advancedPane(); + this.disksPanel = disksPanel(); + + + } + + public JPanel getPane(){ + + + JTabbedPane tabs = new JTabbedPane(); + + tabs.addTab("General", generalPane); + tabs.addTab("Storage & cd", disksPanel); + + tabs.addTab("Advanced Settings", advancedPane); + + + tabs.addTab("Final Step", finalPane); + + // tabs.addTab("Select Course", selectCourse); + + // // Adding JPanels to JTabbedPane + // tabs.addTab("Listing", new JPanel()); + // tabs.addTab("Comment", new JTextArea(10, 40)); + + // tabs.addTab("Register", new JPanel()); + // tabs.addTab("Contact Us", new JPanel()); + + // tabs.addTab("More..", new JPanel()); + this.contentPane.add(tabs); + + return contentPane; + + } + + public void show(){ + + dialog.setSize(600, 600); + dialog.setLocationRelativeTo(null); + dialog.add(this.getPane()); + dialog.setVisible(true); + + + + } + + private JPanel disksPanel(){ + JPanel d = new JPanel(); + d.setLayout(new GridLayout(7,2)); + + d.add(new JLabel(htmlStart+"If selected a new diskfile wil be created in the VM folder with the size set below and attached to the selected Disk Target."+htmlEnd)); + JCheckBox createNewDisk = new JCheckBox(htmlStart+boldStart+"Create new Disk"+boldlEnd+htmlEnd); + this.createNewDisk = createNewDisk; + d.add(createNewDisk); + + d.add(new JLabel(htmlStart+boldStart+"New disk size in GB:"+boldlEnd+htmlEnd)); + final JTextField newDiskSize = new JTextField(); + this.newDiskSize = newDiskSize; + d.add(newDiskSize); + + final JComboBox diskTarget = new JComboBox(diskTargets); + d.add(new JLabel(htmlStart+boldStart+"Disk device target:"+boldlEnd+htmlEnd)); + this.diskTarget = diskTarget; + d.add(diskTarget); + + d.add(new JLabel(htmlStart+boldStart+"Existing disk file location:"+boldlEnd+htmlEnd)); + final JTextField diskFileLocation = new JTextField(); + this.diskFileLocation = diskFileLocation; + d.add(diskFileLocation); + + d.add(new JLabel()); + d.add(new JLabel()); + + final JComboBox cdromTarget = new JComboBox(cdromTargets); + d.add(new JLabel(htmlStart+boldStart+"CDrom device target:"+boldlEnd+htmlEnd)); + this.cdromTarget = cdromTarget; + d.add(cdromTarget); + + d.add(new JLabel(htmlStart+boldStart+"CDrom file location:"+boldlEnd+htmlEnd)); + final JTextField cdromFileLocation = new JTextField(); + this.cdromFileLocation = cdromFileLocation; + d.add(cdromFileLocation); + + return d; + + } + + private JPanel generalPane(){ + + JPanel panel = new JPanel(); + panel.setLayout(new GridLayout(4,2)); + + panel.add(new JLabel(htmlStart+boldStart+"VM Name:"+boldlEnd+"
The VM name wil also be the name of the folder where the VM files are stored."+htmlEnd)); + final JTextField vmName = new JTextField(); + this.vmName = vmName; + panel.add(vmName); + + panel.add(new JLabel(htmlStart+boldStart+"VM Cpu's:"+boldlEnd+htmlEnd)); + final JTextField vmCpus = new JTextField(); + this.vmCpus = vmCpus; + panel.add(vmCpus); + + panel.add(new JLabel(htmlStart+boldStart+"Ram in GB:"+boldlEnd+htmlEnd)); + final JTextField vmRam = new JTextField(); + this.vmRam = vmRam; + panel.add(vmRam); + + + panel.add(new JLabel(htmlStart+boldStart+"VM location"+boldlEnd+":
if empty it wil be placed in the set default folder: "+context.getDefaultSaveLocation()+"
This can be set in the application settings."+htmlEnd)); + final JTextField vmLocation = new JTextField(); + this.vmLocation = vmLocation; + + panel.add(vmLocation); + + + return panel; + + + } + + private JPanel advancedPane(){ + + JPanel panel = new JPanel(); + panel.setLayout(new GridLayout(3,2)); + + final JComboBox vmArch = new JComboBox(archs); + panel.add(new JLabel(htmlStart+boldStart+"VM arch:"+boldlEnd+htmlEnd)); + this.vmArch = vmArch; + panel.add(vmArch); + + panel.add(new JLabel(htmlStart+boldStart+"VM arguments:"+boldlEnd+htmlEnd)); + final JTextField vmArguments = new JTextField(); + this.vmArguments = vmArguments; + panel.add(vmArguments); + + + panel.add(new JLabel(htmlStart+boldStart+"Forwarded ports"+boldlEnd+":
format: protocol::external Port-:interal Port
e.g.: tcp::2222:22,tcp::8080-8081:80"+htmlEnd)); + final JTextField vmForwardedPorts = new JTextField(); + this.vmForwardedPorts = vmForwardedPorts; + panel.add(vmForwardedPorts); + + return panel; + + + } + + private JPanel finalPane(){ + + JPanel panel = new JPanel(); + panel.setLayout(new GridLayout(2,1)); + + // panel.add(new JLabel(vm.vmDetailsTable())); + + + panel.add(new JLabel("")); + JButton createVM = new JButton("Create VM"); + this.createVMButton = createVM; + + createVMButton.addActionListener(this); + panel.add(createVMButton); + + + return panel; + + + } + + @Override + public void actionPerformed(ActionEvent e) { + if(e.getSource().equals(this.createVMButton)){ + + final VMCreationObject newVM = new VMCreationObject(); + newVM.vmName = vmName.getText(); + newVM.cpus = Integer.parseInt(vmCpus.getText()); + newVM.ramInGB = Integer.parseInt(vmRam.getText()); + newVM.suspendToDisk = "no"; + newVM.suspendToMem = "no"; + newVM.arch = vmArch.getSelectedItem().toString(); + Disk disk1 = new Disk(); + + if(createNewDisk.isSelected()){ + disk1.device = "disk"; + disk1.type = "qcow2"; + disk1.target = diskTarget.getSelectedItem().toString(); + + + + disk1.source= VMController.createVMDiskthread(newVM.vmName, context, newDiskSize.getText(), diskFileLocation.getText()); + newVM.devices.add(disk1); + + }else{ + disk1.device = "disk"; + disk1.source = diskFileLocation.getText(); + disk1.type = "qcow2"; + disk1.target = diskTarget.getSelectedItem().toString(); + newVM.devices.add(disk1); + } + + + + + if(!vmForwardedPorts.getText().equals("")){ + + newVM.arguments = "-machine type=q35,accel=hvf -netdev user,id=n1,"+vmForwardedPorts.getText()+" -device virtio-net-pci,netdev=n1,bus=pcie.0,addr=0x19 "+vmArguments.getText(); + + }else{ + newVM.arguments = "-machine type=q35,accel=hvf -netdev user,id=n1 -device virtio-net-pci,netdev=n1,bus=pcie.0,addr=0x19 "+vmArguments.getText(); + + } + + if(cdromFileLocation.getText().equals("")){ + + }else{ + final Disk cdrom = new Disk(); + cdrom.device = "cdrom"; + cdrom.type = "raw"; + cdrom.source = cdromFileLocation.getText(); + cdrom.target = cdromTarget.getSelectedItem().toString(); + newVM.devices.add(cdrom); + } + + + dialog.setVisible(false); + VMDOMCreatorProcessor.createNewVMDomain(newVM, vmLocation.getText(), context); + + DOMController.defineDomain(vmLocation.getText(), newVM.vmName, context); + context.refresh(); + } + + } + +} diff --git a/src/main/java/com/lucaoonk/virsh_gui/ui/VMDetailsPanel.java b/src/main/java/com/lucaoonk/virsh_gui/ui/VMDetailsPanel.java index 2160115..ebdc53c 100644 --- a/src/main/java/com/lucaoonk/virsh_gui/ui/VMDetailsPanel.java +++ b/src/main/java/com/lucaoonk/virsh_gui/ui/VMDetailsPanel.java @@ -74,40 +74,8 @@ private JPanel getVMDetailsPanel(){ VM vm = context.getCurrentSelectedVM(); - String vmDetails = ""; - vmDetails+= ""; - vmDetails+= ""; - vmDetails+= ""; - double ramAmount = 0; - if(Integer.parseInt(vm.getRam()) > 1024){ - ramAmount = Integer.parseInt(vm.getRam()) * 1.024E-6; - }else{ - ramAmount = Integer.parseInt(vm.getRam()); - } - vmDetails+= ""; - - - String disksString = ""; - int amountOfDisks = 0; - for (Device dev : vm.getDevices()) { - if(dev.getClass().getName().equals("com.lucaoonk.virsh_gui.Backend.Objects.Disk")){ - amountOfDisks+=1; - Disk disk = (Disk) dev; - disksString+= disk.device + ":"+"
"+" Location: "+ disk.source + "
 Type: "+ disk.driver + "

"; - - } - - } - vmDetails+= ""; - - String forwardedPorts = ""; - for (String port : vm.getForwardedPorts()) { - forwardedPorts+= port + "
"; - } - vmDetails+= ""; - - vmDetails+= "
PropertyValue
UUID:"+vm.getUUID()+"
vnc:"+vm.vncIP+":"+vm.vncPort+"
CPU's:"+vm.getcpus()+"
Ram in GB:"+ramAmount+"
Attached Disks ("+amountOfDisks+") :"+disksString+"
Forwarded Ports ("+vm.getForwardedPorts().size()+")
Protocol::External Port:Internal Port :
"+forwardedPorts+"
"; - panel.add(new JLabel(vmDetails)); + + panel.add(new JLabel(vm.vmDetailsTable())); mainPanel.add(panel, BorderLayout.CENTER); mainPanel.add(getButtonPanel(), BorderLayout.NORTH); @@ -131,7 +99,7 @@ private JPanel getButtonPanel(){ button.addActionListener(this); - JButton UndefineButton = new JButton("Destroy VM"); + JButton UndefineButton = new JButton("Undefine VM"); UndefineButton.setForeground(Color.RED);; panel.add(UndefineButton); // now add to jpanel diff --git a/src/main/resources/darcula.jar b/src/main/resources/darcula.jar new file mode 100644 index 0000000..8178abd Binary files /dev/null and b/src/main/resources/darcula.jar differ