/** Returns the input pane. */ protected JComponent getInputPane() { resizeButton.setEnabled(false); final JPanel pane = new JPanel(new SpringLayout()); final JPanel inputPane = new JPanel(new SpringLayout()); inputPane.setBackground(Browser.BUTTON_PANEL_BACKGROUND); /* old size */ final JLabel oldSizeLabel = new JLabel("Current Size"); oldSizeLabel.setEnabled(false); final String oldBlockSize = blockDevInfo.getBlockDevice().getBlockSize(); oldSizeWi = new TextfieldWithUnit( Tools.convertKilobytes(oldBlockSize), getUnits(), Widget.NO_REGEXP, 250, Widget.NO_ABBRV, new AccessMode(ConfigData.AccessType.OP, !AccessMode.ADVANCED), Widget.NO_BUTTON); oldSizeWi.setEnabled(false); inputPane.add(oldSizeLabel); inputPane.add(oldSizeWi); inputPane.add(new JLabel()); final String maxBlockSize = getMaxBlockSize(); /* size */ final String newBlockSize = Long.toString((Long.parseLong(oldBlockSize) + Long.parseLong(maxBlockSize)) / 2); final JLabel sizeLabel = new JLabel("New Size"); sizeWi = new TextfieldWithUnit( Tools.convertKilobytes(newBlockSize), getUnits(), Widget.NO_REGEXP, 250, Widget.NO_ABBRV, new AccessMode(ConfigData.AccessType.OP, !AccessMode.ADVANCED), Widget.NO_BUTTON); inputPane.add(sizeLabel); inputPane.add(sizeWi); resizeButton.addActionListener( new ActionListener() { @Override public void actionPerformed(final ActionEvent e) { final Thread thread = new Thread( new Runnable() { @Override public void run() { if (checkDRBD()) { Tools.invokeAndWait(new EnableResizeRunnable(false)); disableComponents(); getProgressBar().start(RESIZE_TIMEOUT * hostCheckBoxes.size()); final boolean ret = resize(sizeWi.getStringValue()); final Host host = blockDevInfo.getHost(); host.getBrowser().getClusterBrowser().updateHWInfo(host); setComboBoxes(); if (ret) { progressBarDone(); } else { progressBarDoneError(); } enableComponents(); } } }); thread.start(); } }); inputPane.add(resizeButton); /* max size */ final JLabel maxSizeLabel = new JLabel("Max Size"); maxSizeLabel.setEnabled(false); maxSizeWi = new TextfieldWithUnit( Tools.convertKilobytes(maxBlockSize), getUnits(), Widget.NO_REGEXP, 250, Widget.NO_ABBRV, new AccessMode(ConfigData.AccessType.OP, !AccessMode.ADVANCED), Widget.NO_BUTTON); maxSizeWi.setEnabled(false); inputPane.add(maxSizeLabel); inputPane.add(maxSizeWi); inputPane.add(new JLabel()); sizeWi.addListeners( new WidgetListener() { @Override public void check(final Object value) { checkButtons(); } }); SpringUtilities.makeCompactGrid( inputPane, 3, 3, /* rows, cols */ 1, 1, /* initX, initY */ 1, 1); /* xPad, yPad */ pane.add(inputPane); final JPanel hostsPane = new JPanel(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT)); final Cluster cluster = blockDevInfo.getHost().getCluster(); hostCheckBoxes = Tools.getHostCheckBoxes(cluster); hostsPane.add(new JLabel("Select Hosts: ")); final Host host = blockDevInfo.getHost(); final String lv = blockDevInfo.getBlockDevice().getLogicalVolume(); for (final Host h : hostCheckBoxes.keySet()) { final Set<String> allLVS = h.getAllLogicalVolumes(); hostCheckBoxes .get(h) .addItemListener( new ItemListener() { @Override public void itemStateChanged(final ItemEvent e) { checkButtons(); } }); if (host == h) { hostCheckBoxes.get(h).setEnabled(false); hostCheckBoxes.get(h).setSelected(true); } else if (blockDevInfo.getBlockDevice().isDrbd() && blockDevInfo.getOtherBlockDevInfo().getHost() == h) { hostCheckBoxes.get(h).setEnabled(false); hostCheckBoxes.get(h).setSelected(true); } else if (!blockDevInfo.getBlockDevice().isDrbd() && !allLVS.contains(lv)) { hostCheckBoxes.get(h).setEnabled(false); hostCheckBoxes.get(h).setSelected(false); } else { hostCheckBoxes.get(h).setEnabled(true); hostCheckBoxes.get(h).setSelected(false); } hostsPane.add(hostCheckBoxes.get(h)); } final javax.swing.JScrollPane sp = new javax.swing.JScrollPane(hostsPane); sp.setPreferredSize(new java.awt.Dimension(0, 45)); pane.add(sp); pane.add(getProgressBarPane(null)); pane.add(getAnswerPane("")); SpringUtilities.makeCompactGrid( pane, 4, 1, /* rows, cols */ 0, 0, /* initX, initY */ 0, 0); /* xPad, yPad */ checkButtons(); return pane; }