opends/src/guitools/org/opends/guitools/controlpanel/event/ScrollPaneBorderListener.java
@@ -22,7 +22,7 @@ * CDDL HEADER END * * * Copyright 2008 Sun Microsystems, Inc. * Copyright 2008-2009 Sun Microsystems, Inc. */ package org.opends.guitools.controlpanel.event; @@ -52,32 +52,61 @@ private Border etchedBorder = BorderFactory.createMatteBorder(0, 0, 1, 0, ColorAndFontConstants.defaultBorderColor); /** * Private constructor. * */ private ScrollPaneBorderListener() { } /** * The constructor of the listener. * Returns a scroll pane border listener that will apply a border only on the * bottom of the scroll. * @param scroll the scroll pane to update. * @param addTopBorder whether we want to add a top border or only a bottom * border when the border must be displayed. * @return a scroll pane border listener that will apply a border only on the * bottom of the scroll. */ public ScrollPaneBorderListener(JScrollPane scroll, boolean addTopBorder) public static ScrollPaneBorderListener createBottomBorderListener( JScrollPane scroll) { this.scroll = scroll; scroll.getHorizontalScrollBar().addComponentListener(this); scroll.getVerticalScrollBar().addComponentListener(this); if (addTopBorder) ScrollPaneBorderListener listener = new ScrollPaneBorderListener(); listener.scroll = scroll; scroll.getHorizontalScrollBar().addComponentListener(listener); scroll.getVerticalScrollBar().addComponentListener(listener); return listener; } /** * Returns a scroll pane border listener that will apply a border on the * bottom and on the top of the scroll. * @param scroll the scroll pane to update. * @return a scroll pane border listener that will apply a border on the * bottom and on the top of the scroll. */ public static ScrollPaneBorderListener createBottomAndTopBorderListener( JScrollPane scroll) { etchedBorder = BorderFactory.createMatteBorder(1, 0, 1, 0, ScrollPaneBorderListener listener = createBottomBorderListener(scroll); listener.etchedBorder = BorderFactory.createMatteBorder(1, 0, 1, 0, ColorAndFontConstants.defaultBorderColor); } return listener; } /** * The constructor of the listener. * Returns a scroll pane border listener that will apply a full border to the * scroll. * @param scroll the scroll pane to update. * @return a scroll pane border listener that will apply a full border to the * scroll. */ public ScrollPaneBorderListener(JScrollPane scroll) public static ScrollPaneBorderListener createFullBorderListener( JScrollPane scroll) { this(scroll, false); ScrollPaneBorderListener listener = createBottomBorderListener(scroll); listener.etchedBorder = BorderFactory.createMatteBorder(1, 1, 1, 1, ColorAndFontConstants.defaultBorderColor); return listener; } /** opends/src/guitools/org/opends/guitools/controlpanel/ui/BackupListPanel.java
@@ -22,7 +22,7 @@ * CDDL HEADER END * * * Copyright 2008 Sun Microsystems, Inc. * Copyright 2008-2009 Sun Microsystems, Inc. */ package org.opends.guitools.controlpanel.ui; @@ -254,11 +254,10 @@ TableColumn col = backupList.getColumn(model.getColumnName(i)); col.setCellRenderer(renderer); } backupList.getTableHeader().setVisible(false); backupList.getTableHeader().setPreferredSize(new Dimension(0, 0)); backupList.getTableHeader().setMinimumSize(new Dimension(0, 0)); backupList.setTableHeader(null); Utilities.updateTableSizes(backupList); tableScroll = Utilities.createScrollPane(backupList); tableScroll.setColumnHeaderView(null); tableScroll.setPreferredSize(backupList.getPreferredSize()); gbc.anchor = GridBagConstraints.NORTHWEST; add(tableScroll, gbc); opends/src/guitools/org/opends/guitools/controlpanel/ui/CustomAttributePanel.java
@@ -22,7 +22,7 @@ * CDDL HEADER END * * * Copyright 2008 Sun Microsystems, Inc. * Copyright 2008-2009 Sun Microsystems, Inc. */ package org.opends.guitools.controlpanel.ui; @@ -88,7 +88,8 @@ gbc.gridx = 0; gbc.gridy = 0; JScrollPane scroll = Utilities.createBorderLessScrollBar(p); scrollListener = new ScrollPaneBorderListener(scroll); scrollListener = ScrollPaneBorderListener.createBottomBorderListener(scroll); add(scroll, gbc); gbc.gridy ++; opends/src/guitools/org/opends/guitools/controlpanel/ui/CustomObjectClassPanel.java
@@ -22,7 +22,7 @@ * CDDL HEADER END * * * Copyright 2008 Sun Microsystems, Inc. * Copyright 2008-2009 Sun Microsystems, Inc. */ package org.opends.guitools.controlpanel.ui; @@ -88,7 +88,8 @@ gbc.gridx = 0; gbc.gridy = 0; JScrollPane scroll = Utilities.createBorderLessScrollBar(p); scrollListener = new ScrollPaneBorderListener(scroll); scrollListener = ScrollPaneBorderListener.createBottomBorderListener(scroll); add(scroll, gbc); gbc.gridy ++; opends/src/guitools/org/opends/guitools/controlpanel/ui/IndexPanel.java
@@ -128,7 +128,8 @@ gbc.gridx = 0; gbc.gridy = 0; JScrollPane scroll = Utilities.createBorderLessScrollBar(p); scrollListener = new ScrollPaneBorderListener(scroll); scrollListener = ScrollPaneBorderListener.createBottomBorderListener(scroll); add(scroll, gbc); gbc.gridy ++; opends/src/guitools/org/opends/guitools/controlpanel/ui/MonitoringAttributesViewPanel.java
@@ -29,17 +29,25 @@ 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; @@ -65,6 +73,9 @@ // enumeration will be the same. private JCheckBox[] checkboxes = {}; private JButton selectAll; private JButton selectNone; /** * Creates an instance of this panel that uses String as attributes. * @param attributes the list of possible attributes. @@ -90,6 +101,15 @@ } /** * {@inheritDoc} */ @Override public boolean requiresScroll() { return false; } /** * Default constructor. * @param attributes the attributes that will be proposed to the user. * @@ -126,9 +146,8 @@ GridBagConstraints gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridy = 0; int nCols = monitoringAttributes.size() > 30 ? 3 : 2; gbc.gridwidth = nCols; gbc.gridwidth = 2; gbc.gridx = 0; add(Utilities.createPrimaryLabel( INFO_CTRL_PANEL_OPERATION_VIEW_LABEL.get()), gbc); @@ -136,49 +155,100 @@ gbc.gridwidth = 1; gbc.insets.top = 10; JPanel checkBoxPanel = new JPanel(new GridBagLayout()); checkBoxPanel.setOpaque(false); JScrollPane scroll = Utilities.createBorderLessScrollBar(checkBoxPanel); ScrollPaneBorderListener scrollListener = ScrollPaneBorderListener.createFullBorderListener(scroll); checkboxes = new JCheckBox[monitoringAttributes.size()]; int i = 0; Iterator<T> ops = monitoringAttributes.iterator(); while (ops.hasNext()) for (T attribute : monitoringAttributes) { T operation = ops.next(); Message m = getMessage(operation); 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); } } }); JCheckBox cb = Utilities.createCheckBox(m); 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); } } }); gbc.weightx = 1.0; gbc.weighty = 1.0; gbc.gridheight = 3; gbc.fill = GridBagConstraints.BOTH; add(scroll, gbc); 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); gbc = new GridBagConstraints(); gbc.gridy = 0; gbc.gridwidth = 1; int preferredViewHeight = -1; for (JCheckBox cb : checkboxes) { gbc.gridx = 0; gbc.weightx = 0.0; gbc.insets.left = 0; checkboxes[i] = cb; add(checkboxes[i], gbc); gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; checkBoxPanel.add(cb, gbc); gbc.gridx = 1; 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.fill = GridBagConstraints.HORIZONTAL; checkBoxPanel.add(Box.createHorizontalGlue(), gbc); gbc.insets.top = 10; gbc.gridy ++; i++; 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 = nCols; gbc.weighty = 1.0; gbc.gridwidth = 2; gbc.fill = GridBagConstraints.VERTICAL; add(Box.createVerticalGlue(), gbc); gbc.weighty = 1.0; checkBoxPanel.add(Box.createVerticalGlue(), gbc); scroll.getViewport().setPreferredSize( new Dimension(checkBoxPanel.getPreferredSize().width + 15, preferredViewHeight)); } /** opends/src/guitools/org/opends/guitools/controlpanel/ui/SimplifiedViewEntryPanel.java
@@ -22,7 +22,7 @@ * CDDL HEADER END * * * Copyright 2008 Sun Microsystems, Inc. * Copyright 2008-2009 Sun Microsystems, Inc. */ package org.opends.guitools.controlpanel.ui; @@ -421,7 +421,8 @@ gbc.gridy ++; gbc.fill = GridBagConstraints.BOTH; scrollAttributes = Utilities.createBorderLessScrollBar(attributesPanel); scrollListener = new ScrollPaneBorderListener(scrollAttributes, true); scrollListener = ScrollPaneBorderListener.createBottomAndTopBorderListener( scrollAttributes); gbc.insets = new Insets(0, 0, 0, 0); add(scrollAttributes, gbc); } opends/src/guitools/org/opends/guitools/controlpanel/ui/VLVIndexPanel.java
@@ -250,7 +250,8 @@ gbc.gridx = 0; gbc.gridy = 0; JScrollPane scroll = Utilities.createBorderLessScrollBar(p); scrollListener = new ScrollPaneBorderListener(scroll); scrollListener = ScrollPaneBorderListener.createBottomBorderListener(scroll); add(scroll, gbc); gbc.gridy ++; opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java
@@ -772,7 +772,7 @@ int headerMaxWidth = 0; JTableHeader header = table.getTableHeader(); if (header.isVisible()) if (header != null && header.isVisible()) { for (int col=0; col<table.getColumnCount(); col++) { @@ -801,14 +801,18 @@ TableColumn tcol = table.getColumnModel().getColumn(col); TableCellRenderer renderer = tcol.getHeaderRenderer(); if (renderer == null) if ((renderer == null) && (header != null)) { renderer = table.getTableHeader().getDefaultRenderer(); renderer = header.getDefaultRenderer(); } if (renderer != null) { Component comp = renderer.getTableCellRendererComponent(table, table.getModel().getColumnName(col), false, false, 0, col); colMaxWidth = comp.getPreferredSize().width + 8; colMaxWidth = comp.getPreferredSize().width + (2 * horizontalMargin) + 8; } if (colMaxWidth > screenSize.width) { @@ -818,7 +822,7 @@ for (int row=0; row<table.getRowCount(); row++) { renderer = table.getCellRenderer(row, col); comp = table.prepareRenderer(renderer, row, col); Component comp = table.prepareRenderer(renderer, row, col); int colWidth = comp.getPreferredSize().width + (2 * horizontalMargin); colMaxWidth = Math.max(colMaxWidth, colWidth); } @@ -827,7 +831,7 @@ } if (header.isVisible()) if (header != null && header.isVisible()) { header.setPreferredSize(new Dimension( headerMaxWidth, @@ -835,24 +839,25 @@ } int maxRow = 0; int maxRow = table.getRowHeight(); for (int row=0; row<table.getRowCount(); row++) { int rowMaxHeight = table.getRowHeight(); for (int col=0; col<table.getColumnCount(); col++) { TableCellRenderer renderer = table.getCellRenderer(row, col); Component comp = renderer.getTableCellRendererComponent(table, table.getModel().getValueAt(row, col), false, false, row, col); int colHeight = comp.getPreferredSize().height; int colHeight = comp.getPreferredSize().height + (2 * verticalMargin); if (colHeight > screenSize.height) { colHeight = 0; } rowMaxHeight = Math.max(rowMaxHeight, colHeight); maxRow = Math.max(maxRow, colHeight); } table.setRowHeight(row, rowMaxHeight); maxRow = Math.max(maxRow, rowMaxHeight); } if (maxRow > table.getRowHeight()) { table.setRowHeight(maxRow); } Dimension d1; if (rows == -1)