Example #1
0
 /** Returns device parameters. */
 @Override
 protected Map<String, String> getHWParameters(final boolean allParams) {
   Tools.invokeAndWait(
       new Runnable() {
         @Override
         public void run() {
           getInfoPanel();
         }
       });
   final String[] params = getRealParametersFromXML();
   final Map<String, String> parameters = new LinkedHashMap<String, String>();
   for (final String param : params) {
     final String value = getComboBoxValue(param);
     if (DiskData.TYPE.equals(param)) {
       parameters.put(param, value);
     } else if (DiskData.TARGET_BUS_TYPE.equals(param)) {
       if (value == null) {
         parameters.put(DiskData.TARGET_BUS, null);
         parameters.put(DiskData.TARGET_TYPE, null);
       } else {
         final String[] values = value.split("/");
         if (values.length == 2) {
           parameters.put(DiskData.TARGET_BUS, values[0]);
           parameters.put(DiskData.TARGET_TYPE, values[1]);
         } else {
           LOG.appWarning("getHWParameters: cannot parse: " + param + " = " + value);
         }
       }
     } else if (allParams) {
       if (Tools.areEqual(getParamDefault(param), value)) {
         parameters.put(param, null);
       } else {
         parameters.put(param, value);
       }
     } else if (!Tools.areEqual(getParamSaved(param), value)
         || DiskData.SOURCE_FILE.equals(param)
         || DiskData.SOURCE_DEVICE.equals(param)
         || DiskData.SOURCE_PROTOCOL.equals(param)
         || DiskData.SOURCE_NAME.equals(param)
         || DiskData.SOURCE_HOST_NAME.equals(param)
         || DiskData.SOURCE_HOST_PORT.equals(param)
         || DiskData.AUTH_USERNAME.equals(param)
         || DiskData.AUTH_SECRET_TYPE.equals(param)
         || DiskData.AUTH_SECRET_UUID.equals(param)) {
       if (Tools.areEqual(getParamDefault(param), value)) {
         parameters.put(param, null);
       } else {
         parameters.put(param, value);
       }
     }
   }
   parameters.put(DiskData.SAVED_TARGET_DEVICE, getName());
   setName(getParamSaved(DiskData.TARGET_DEVICE));
   return parameters;
 }
Example #2
0
 /** Returns combo box for parameter. */
 @Override
 protected Widget createWidget(final String param, final String prefix, final int width) {
   String prefixS;
   if (prefix == null) {
     prefixS = "";
   } else {
     prefixS = prefix;
   }
   if (DiskData.SOURCE_FILE.equals(param)) {
     final String sourceFile = getParamSaved(DiskData.SOURCE_FILE);
     final String regexp = ".*[^/]$";
     final MyButton fileChooserBtn = new MyButton("Browse...");
     fileChooserBtn.miniButton();
     final Widget paramWi =
         WidgetFactory.createInstance(
             getFieldType(param),
             sourceFile,
             getParamPossibleChoices(param),
             regexp,
             width,
             Widget.NO_ABBRV,
             new AccessMode(getAccessType(param), false), /* only adv. mode */
             fileChooserBtn);
     paramWi.setAlwaysEditable(true);
     sourceFileWi.put(prefixS, paramWi);
     if (Tools.isWindows()) {
       /* does not work on windows and I tried, ultimately because
          FilePane.usesShellFolder(fc) in BasicFileChooserUI returns
          true and it is not possible to descent into a directory.
          TODO: It may work in the future.
       */
       paramWi.setTFButtonEnabled(false);
     }
     fileChooserBtn.addActionListener(
         new ActionListener() {
           @Override
           public void actionPerformed(final ActionEvent e) {
             final Thread t =
                 new Thread(
                     new Runnable() {
                       @Override
                       public void run() {
                         String file;
                         final String oldFile = paramWi.getStringValue();
                         if (oldFile == null || "".equals(oldFile)) {
                           file = LIBVIRT_IMAGE_LOCATION;
                         } else {
                           file = oldFile;
                         }
                         startFileChooser(paramWi, file, FILECHOOSER_FILE_ONLY);
                       }
                     });
             t.start();
           }
         });
     widgetAdd(param, prefix, paramWi);
     return paramWi;
   } else {
     final Widget paramWi = super.createWidget(param, prefix, width);
     if (DiskData.TYPE.equals(param) || DiskData.TARGET_BUS_TYPE.equals(param)) {
       paramWi.setAlwaysEditable(false);
     } else if (DiskData.SOURCE_DEVICE.equals(param)) {
       paramWi.setAlwaysEditable(true);
       sourceDeviceWi.put(prefixS, paramWi);
     } else if (DiskData.SOURCE_NAME.equals(param)) {
       sourceNameWi.put(prefixS, paramWi);
     } else if (DiskData.SOURCE_PROTOCOL.equals(param)) {
       sourceProtocolWi.put(prefixS, paramWi);
     } else if (DiskData.SOURCE_HOST_NAME.equals(param)) {
       sourceHostNameWi.put(prefixS, paramWi);
     } else if (DiskData.SOURCE_HOST_PORT.equals(param)) {
       sourceHostPortWi.put(prefixS, paramWi);
     } else if (DiskData.AUTH_USERNAME.equals(param)) {
       authUsernameWi.put(prefixS, paramWi);
     } else if (DiskData.AUTH_SECRET_TYPE.equals(param)) {
       authSecretTypeWi.put(prefixS, paramWi);
     } else if (DiskData.AUTH_SECRET_UUID.equals(param)) {
       authSecretUuidWi.put(prefixS, paramWi);
     } else if (DiskData.TARGET_DEVICE.equals(param)) {
       paramWi.setAlwaysEditable(true);
       targetDeviceWi.put(prefixS, paramWi);
     } else if (DiskData.DRIVER_NAME.equals(param)) {
       driverNameWi.put(prefixS, paramWi);
     } else if (DiskData.DRIVER_TYPE.equals(param)) {
       driverTypeWi.put(prefixS, paramWi);
     } else if (DiskData.DRIVER_CACHE.equals(param)) {
       driverCacheWi.put(prefixS, paramWi);
     } else if (DiskData.READONLY.equals(param)) {
       readonlyWi.put(prefixS, paramWi);
     }
     return paramWi;
   }
 }
Example #3
0
 /** Returns true if the value of the parameter is ok. */
 @Override
 protected boolean checkParam(final String param, final String newValue) {
   if (DiskData.TYPE.equals(param)) {
     Tools.invokeLater(
         !Tools.CHECK_SWING_THREAD,
         new Runnable() {
           @Override
           public void run() {
             final boolean file = FILE_TYPE.equals(newValue);
             final boolean block = BLOCK_TYPE.equals(newValue);
             final boolean network = NETWORK_TYPE.equals(newValue);
             for (final String p : sourceFileWi.keySet()) {
               sourceFileWi.get(p).setVisible(file);
             }
             for (final String p : sourceDeviceWi.keySet()) {
               sourceDeviceWi.get(p).setVisible(block);
             }
             for (final Map<String, Widget> w : checkFieldList) {
               for (String p : w.keySet()) {
                 w.get(p).setVisible(network);
               }
             }
           }
         });
     checkOneParam(DiskData.SOURCE_FILE);
     checkOneParam(DiskData.SOURCE_DEVICE);
   } else if (DiskData.TARGET_BUS_TYPE.equals(param)) {
     final Set<String> devices = new LinkedHashSet<String>();
     devices.add(null);
     if (newValue != null) {
       final String[] targetDevices = TARGET_DEVICES_MAP.get(newValue);
       if (targetDevices != null) {
         for (final String dev : targetDevices) {
           if (!getVMSVirtualDomainInfo().isDevice(dev)) {
             devices.add(dev);
           }
         }
       }
     }
     final String saved = getParamSaved(DiskData.TARGET_DEVICE);
     String selected = null;
     devices.add(saved);
     if (saved == null || getResource().isNew()) {
       if (devices.size() > 1) {
         selected = devices.toArray(new String[devices.size()])[1];
       }
     } else {
       selected = saved;
     }
     if (prevTargetBusType == null || !prevTargetBusType.equals(newValue)) {
       final String sel = selected;
       for (final String p : targetDeviceWi.keySet()) {
         targetDeviceWi.get(p).reloadComboBox(sel, devices.toArray(new String[devices.size()]));
       }
       prevTargetBusType = newValue;
     }
     final String tbs = getComboBoxValue(DiskData.TARGET_BUS_TYPE);
     if (getParamSaved(DiskData.DRIVER_NAME) == null && !tbs.equals(previousTargetBusType)) {
       if ("ide/cdrom".equals(newValue)) {
         for (final String p : readonlyWi.keySet()) {
           readonlyWi.get(p).setValue("True");
         }
         for (final String p : driverTypeWi.keySet()) {
           if (getResource().isNew()) {
             driverTypeWi.get(p).setValue("raw");
           } else {
             if (driverTypeWi.get(p).getValue() != null) {
               driverTypeWi.get(p).setValue(null);
             }
           }
         }
       } else if ("virtio/disk".equals(newValue)) {
         for (final String p : driverTypeWi.keySet()) {
           driverTypeWi.get(p).setValue("raw");
         }
         for (final String p : driverCacheWi.keySet()) {
           driverCacheWi.get(p).setValue("none");
         }
       } else {
         for (final String p : readonlyWi.keySet()) {
           readonlyWi.get(p).setValue("False");
           driverTypeWi.get(p).setValue("raw");
         }
       }
     }
     previousTargetBusType = tbs;
     checkOneParam(DiskData.SOURCE_FILE);
     checkOneParam(DiskData.SOURCE_DEVICE);
   }
   if (isRequired(param) && (newValue == null || "".equals(newValue))) {
     return false;
   }
   return true;
 }