From 1ec3da3227492234079d23aaa72c5c9995201a5f Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Wed, 18 Feb 2009 17:35:36 +0000
Subject: [PATCH] Fix for issue 3800 (Monitoring General Information : Resize the Show Operations... window)
---
opends/src/guitools/org/opends/guitools/controlpanel/ui/MonitoringAttributesViewPanel.java | 516 ++++++++++++++++++++++++++++++++------------------------
1 files changed, 293 insertions(+), 223 deletions(-)
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/MonitoringAttributesViewPanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/MonitoringAttributesViewPanel.java
index 6b52caa..c92272b 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/MonitoringAttributesViewPanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/MonitoringAttributesViewPanel.java
@@ -29,265 +29,335 @@
import static org.opends.messages.AdminToolMessages.*;
import java.awt.Component;
+import java.awt.Dimension;
import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Iterator;
import java.util.LinkedHashSet;
import javax.swing.Box;
+import javax.swing.JButton;
import javax.swing.JCheckBox;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
import org.opends.guitools.controlpanel.datamodel.MonitoringAttributes;
import org.opends.guitools.controlpanel.event.ConfigurationChangeEvent;
+import org.opends.guitools.controlpanel.event.ScrollPaneBorderListener;
import org.opends.guitools.controlpanel.util.Utilities;
import org.opends.messages.Message;
/**
- *
- * The panel that allows the user to select which attributes must be displayed
- * in the traffic monitoring tables.
- *
- * @param <T> the type of the objects that this panel manages. For now it only
- * manages String and MonitoringAttribute objects.
- */
+*
+* The panel that allows the user to select which attributes must be displayed
+* in the traffic monitoring tables.
+*
+* @param <T> the type of the objects that this panel manages. For now it only
+* manages String and MonitoringAttribute objects.
+*/
public class MonitoringAttributesViewPanel<T> extends StatusGenericPanel
{
- private static final long serialVersionUID = 6462932163745559L;
+ private static final long serialVersionUID = 6462932163745559L;
- private LinkedHashSet<T> selectedAttributes = new LinkedHashSet<T>();
+ private LinkedHashSet<T> selectedAttributes = new LinkedHashSet<T>();
- private LinkedHashSet<T> monitoringAttributes;
+ private LinkedHashSet<T> monitoringAttributes;
- private boolean isCancelled = true;
+ private boolean isCancelled = true;
- // Note: the order of the checkboxes and the elements in the Attributes
- // enumeration will be the same.
- private JCheckBox[] checkboxes = {};
+ // Note: the order of the checkboxes and the elements in the Attributes
+ // enumeration will be the same.
+ private JCheckBox[] checkboxes = {};
- /**
- * Creates an instance of this panel that uses String as attributes.
- * @param attributes the list of possible attributes.
- * @return an instance of this panel that uses String as attributes.
- */
- public static MonitoringAttributesViewPanel<String>
- createStringInstance(LinkedHashSet<String> attributes)
- {
- return new MonitoringAttributesViewPanel<String>(attributes);
- }
+ private JButton selectAll;
+ private JButton selectNone;
- /**
- * Creates an instance of this panel that uses MonitoringAttributes as
- * attributes.
- * @param attributes the list of possible attributes.
- * @return an instance of this panel that uses String as attributes.
- */
- public static MonitoringAttributesViewPanel<MonitoringAttributes>
- createMonitoringAttributesInstance(
- LinkedHashSet<MonitoringAttributes> attributes)
- {
- return new MonitoringAttributesViewPanel<MonitoringAttributes>(attributes);
- }
+ /**
+ * Creates an instance of this panel that uses String as attributes.
+ * @param attributes the list of possible attributes.
+ * @return an instance of this panel that uses String as attributes.
+ */
+ public static MonitoringAttributesViewPanel<String>
+ createStringInstance(LinkedHashSet<String> attributes)
+ {
+ return new MonitoringAttributesViewPanel<String>(attributes);
+ }
- /**
- * Default constructor.
- * @param attributes the attributes that will be proposed to the user.
- *
- */
- protected MonitoringAttributesViewPanel(
- LinkedHashSet<T> attributes)
- {
- super();
- monitoringAttributes = new LinkedHashSet<T>();
- monitoringAttributes.addAll(attributes);
- createLayout();
- }
+ /**
+ * Creates an instance of this panel that uses MonitoringAttributes as
+ * attributes.
+ * @param attributes the list of possible attributes.
+ * @return an instance of this panel that uses String as attributes.
+ */
+ public static MonitoringAttributesViewPanel<MonitoringAttributes>
+ createMonitoringAttributesInstance(
+ LinkedHashSet<MonitoringAttributes> attributes)
+ {
+ return new MonitoringAttributesViewPanel<MonitoringAttributes>(attributes);
+ }
- /**
- * Sets the attributes that must be selected in this dialog.
- * @param selectedAttributes the selected attributes.
- */
- public void setSelectedAttributes(
- Collection<T> selectedAttributes)
- {
- int i = 0;
- for (T attribute : monitoringAttributes)
- {
- checkboxes[i].setSelected(selectedAttributes.contains(attribute));
- i++;
- }
- }
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean requiresScroll()
+ {
+ return false;
+ }
- /**
- * Creates the layout of the panel (but the contents are not populated here).
- */
- private void createLayout()
- {
- GridBagConstraints gbc = new GridBagConstraints();
- gbc.fill = GridBagConstraints.HORIZONTAL;
- gbc.gridy = 0;
- int nCols = monitoringAttributes.size() > 30 ? 3 : 2;
+ /**
+ * Default constructor.
+ * @param attributes the attributes that will be proposed to the user.
+ *
+ */
+ protected MonitoringAttributesViewPanel(
+ LinkedHashSet<T> attributes)
+ {
+ super();
+ monitoringAttributes = new LinkedHashSet<T>();
+ monitoringAttributes.addAll(attributes);
+ createLayout();
+ }
- gbc.gridwidth = nCols;
- gbc.gridx = 0;
- add(Utilities.createPrimaryLabel(
- INFO_CTRL_PANEL_OPERATION_VIEW_LABEL.get()), gbc);
- gbc.gridy ++;
- gbc.gridwidth = 1;
- gbc.insets.top = 10;
+ /**
+ * Sets the attributes that must be selected in this dialog.
+ * @param selectedAttributes the selected attributes.
+ */
+ public void setSelectedAttributes(
+ Collection<T> selectedAttributes)
+ {
+ int i = 0;
+ for (T attribute : monitoringAttributes)
+ {
+ checkboxes[i].setSelected(selectedAttributes.contains(attribute));
+ i++;
+ }
+ }
- checkboxes = new JCheckBox[monitoringAttributes.size()];
+ /**
+ * Creates the layout of the panel (but the contents are not populated here).
+ */
+ private void createLayout()
+ {
+ GridBagConstraints gbc = new GridBagConstraints();
+ gbc.fill = GridBagConstraints.HORIZONTAL;
+ gbc.gridy = 0;
- int i = 0;
- Iterator<T> ops = monitoringAttributes.iterator();
- while (ops.hasNext())
- {
- T operation = ops.next();
- Message m = getMessage(operation);
+ gbc.gridwidth = 2;
+ gbc.gridx = 0;
+ add(Utilities.createPrimaryLabel(
+ INFO_CTRL_PANEL_OPERATION_VIEW_LABEL.get()), gbc);
+ gbc.gridy ++;
+ gbc.gridwidth = 1;
+ gbc.insets.top = 10;
- JCheckBox cb = Utilities.createCheckBox(m);
- gbc.gridx = 0;
- gbc.weightx = 0.0;
- gbc.insets.left = 0;
- checkboxes[i] = cb;
- add(checkboxes[i], gbc);
- gbc.weightx = 1.0;
- gbc.insets.left = 40;
- while (gbc.gridx + 1 < nCols)
- {
- gbc.gridx ++;
- if (i + 1 >= checkboxes.length)
- {
- add(Box.createHorizontalGlue(), gbc);
- }
- else
- {
- operation = ops.next();
- m = getMessage(operation);
- cb = Utilities.createCheckBox(m);
- checkboxes[i+1] = cb;
- add(checkboxes[i+1], gbc);
- i ++;
- checkboxes[i].setSelected(true);
- }
- }
- gbc.gridy ++;
- i++;
- }
- gbc.gridx = 0;
- gbc.gridwidth = nCols;
- gbc.weighty = 1.0;
- gbc.fill = GridBagConstraints.VERTICAL;
- add(Box.createVerticalGlue(), gbc);
- }
+ JPanel checkBoxPanel = new JPanel(new GridBagLayout());
+ checkBoxPanel.setOpaque(false);
+ JScrollPane scroll = Utilities.createBorderLessScrollBar(checkBoxPanel);
+ ScrollPaneBorderListener scrollListener =
+ ScrollPaneBorderListener.createFullBorderListener(scroll);
- /**
- * {@inheritDoc}
- */
- public Message getTitle()
- {
- return INFO_CTRL_PANEL_ATTRIBUTE_VIEW_OPTIONS_TITLE.get();
- }
+ checkboxes = new JCheckBox[monitoringAttributes.size()];
- /**
- * {@inheritDoc}
- */
- public void configurationChanged(ConfigurationChangeEvent ev)
- {
- }
+ int i = 0;
+ for (T attribute : monitoringAttributes)
+ {
+ Message m = getMessage(attribute);
+ checkboxes[i] = Utilities.createCheckBox(m);
+ i++;
+ }
+ selectAll = Utilities.createButton(INFO_CTRL_PANEL_SELECT_ALL_BUTTON.get());
+ selectAll.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent ev)
+ {
+ for (JCheckBox cb : checkboxes)
+ {
+ cb.setSelected(true);
+ }
+ }
+ });
- /**
- * {@inheritDoc}
- */
- public Component getPreferredFocusComponent()
- {
- return checkboxes[0];
- }
+ selectNone = Utilities.createButton(
+ INFO_CTRL_PANEL_CLEAR_SELECTION_BUTTON.get());
+ selectNone.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent ev)
+ {
+ for (JCheckBox cb : checkboxes)
+ {
+ cb.setSelected(false);
+ }
+ }
+ });
- /**
- * {@inheritDoc}
- */
- public void toBeDisplayed(boolean visible)
- {
- if (visible)
- {
- isCancelled = true;
- }
- }
+ gbc.weightx = 1.0;
+ gbc.weighty = 1.0;
+ gbc.gridheight = 3;
+ gbc.fill = GridBagConstraints.BOTH;
+ add(scroll, gbc);
- /**
- * {@inheritDoc}
- */
- public void okClicked()
- {
- // Check that at least one checkbox is selected.
- selectedAttributes.clear();
- int i = 0;
- for (T operation : monitoringAttributes)
- {
- if (checkboxes[i].isSelected())
- {
- selectedAttributes.add(operation);
- }
- i++;
- }
- if (selectedAttributes.isEmpty())
- {
- ArrayList<Message> errors = new ArrayList<Message>();
- errors.add(INFO_CTRL_PANEL_NO_OPERATION_SELECTED.get());
- super.displayErrorDialog(errors);
- }
- else
- {
- isCancelled = false;
- super.closeClicked();
- }
- }
+ gbc.gridx = 1;
+ gbc.weightx = 0.0;
+ gbc.weighty = 0.0;
+ gbc.insets.left = 10;
+ gbc.gridheight = 1;
+ add(selectAll, gbc);
+ gbc.gridy ++;
+ gbc.insets.top = 10;
+ add(selectNone, gbc);
+ gbc.gridy ++;
+ gbc.weighty = 1.0;
+ add(Box.createVerticalGlue(), gbc);
- /**
- * {@inheritDoc}
- */
- public GenericDialog.ButtonType getButtonType()
- {
- return GenericDialog.ButtonType.OK_CANCEL;
- }
+ gbc = new GridBagConstraints();
+ gbc.gridy = 0;
+ gbc.gridwidth = 1;
+ int preferredViewHeight = -1;
+ for (JCheckBox cb : checkboxes)
+ {
+ gbc.gridx = 0;
+ gbc.weightx = 0.0;
+ gbc.anchor = GridBagConstraints.WEST;
+ gbc.fill = GridBagConstraints.NONE;
+ checkBoxPanel.add(cb, gbc);
+ gbc.gridx = 1;
+ gbc.weightx = 1.0;
+ gbc.fill = GridBagConstraints.HORIZONTAL;
+ checkBoxPanel.add(Box.createHorizontalGlue(), gbc);
+ gbc.insets.top = 10;
+ gbc.gridy ++;
+ if (gbc.gridy == 15)
+ {
+ preferredViewHeight = checkBoxPanel.getPreferredSize().height;
+ }
+ }
+ if (preferredViewHeight < 0)
+ {
+ preferredViewHeight = checkBoxPanel.getPreferredSize().height;
+ }
+ gbc.insets = new Insets(0, 0, 0, 0);
+ gbc.gridx = 0;
+ gbc.gridwidth = 2;
+ gbc.fill = GridBagConstraints.VERTICAL;
+ gbc.weighty = 1.0;
+ checkBoxPanel.add(Box.createVerticalGlue(), gbc);
+ scroll.getViewport().setPreferredSize(
+ new Dimension(checkBoxPanel.getPreferredSize().width + 15,
+ preferredViewHeight));
+ }
- /**
- * Returns <CODE>true</CODE> if the user closed the dialog by cancelling it
- * and <CODE>false</CODE> otherwise.
- * @return <CODE>true</CODE> if the user closed the dialog by cancelling it
- * and <CODE>false</CODE> otherwise.
- */
- public boolean isCancelled()
- {
- return isCancelled;
- }
+ /**
+ * {@inheritDoc}
+ */
+ public Message getTitle()
+ {
+ return INFO_CTRL_PANEL_ATTRIBUTE_VIEW_OPTIONS_TITLE.get();
+ }
- /**
- * Returns the list of attributes that the user selected.
- * @return the list of attributes that the user selected.
- */
- public LinkedHashSet<T> getAttributes()
- {
- return selectedAttributes;
- }
+ /**
+ * {@inheritDoc}
+ */
+ public void configurationChanged(ConfigurationChangeEvent ev)
+ {
+ }
- /**
- * Returns the message for the provided operation.
- * @param operation the operation.
- * @return the message for the provided operation.
- */
- protected Message getMessage(T operation)
- {
- Message m;
- if (operation instanceof MonitoringAttributes)
- {
- m = ((MonitoringAttributes)operation).getMessage();
- }
- else
- {
- m = Message.raw(operation.toString());
- }
- return m;
- }
+ /**
+ * {@inheritDoc}
+ */
+ public Component getPreferredFocusComponent()
+ {
+ return checkboxes[0];
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void toBeDisplayed(boolean visible)
+ {
+ if (visible)
+ {
+ isCancelled = true;
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void okClicked()
+ {
+ // Check that at least one checkbox is selected.
+ selectedAttributes.clear();
+ int i = 0;
+ for (T operation : monitoringAttributes)
+ {
+ if (checkboxes[i].isSelected())
+ {
+ selectedAttributes.add(operation);
+ }
+ i++;
+ }
+ if (selectedAttributes.isEmpty())
+ {
+ ArrayList<Message> errors = new ArrayList<Message>();
+ errors.add(INFO_CTRL_PANEL_NO_OPERATION_SELECTED.get());
+ super.displayErrorDialog(errors);
+ }
+ else
+ {
+ isCancelled = false;
+ super.closeClicked();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public GenericDialog.ButtonType getButtonType()
+ {
+ return GenericDialog.ButtonType.OK_CANCEL;
+ }
+
+ /**
+ * Returns <CODE>true</CODE> if the user closed the dialog by cancelling it
+ * and <CODE>false</CODE> otherwise.
+ * @return <CODE>true</CODE> if the user closed the dialog by cancelling it
+ * and <CODE>false</CODE> otherwise.
+ */
+ public boolean isCancelled()
+ {
+ return isCancelled;
+ }
+
+ /**
+ * Returns the list of attributes that the user selected.
+ * @return the list of attributes that the user selected.
+ */
+ public LinkedHashSet<T> getAttributes()
+ {
+ return selectedAttributes;
+ }
+
+ /**
+ * Returns the message for the provided operation.
+ * @param operation the operation.
+ * @return the message for the provided operation.
+ */
+ protected Message getMessage(T operation)
+ {
+ Message m;
+ if (operation instanceof MonitoringAttributes)
+ {
+ m = ((MonitoringAttributes)operation).getMessage();
+ }
+ else
+ {
+ m = Message.raw(operation.toString());
+ }
+ return m;
+ }
}
--
Gitblit v1.10.0