6748745: JConsole: plotters don't resize well when the window is resized
Summary: part of the fix was contributed by jfdenise
Reviewed-by: jfdenise
--- a/jdk/src/share/classes/sun/tools/jconsole/Plotter.java Fri Sep 12 23:31:43 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/Plotter.java Wed Sep 17 13:40:40 2008 +0200
@@ -30,18 +30,15 @@
import java.beans.*;
import java.io.*;
import java.lang.reflect.Array;
-import java.text.*;
import java.util.*;
import javax.accessibility.*;
import javax.swing.*;
import javax.swing.border.*;
-import javax.swing.event.*;
import javax.swing.filechooser.*;
import javax.swing.filechooser.FileFilter;
import com.sun.tools.jconsole.JConsoleContext;
-import com.sun.tools.jconsole.JConsoleContext.ConnectionState;
import static com.sun.tools.jconsole.JConsoleContext.ConnectionState.*;
@@ -130,6 +127,7 @@
private int bottomMargin = 45;
private int leftMargin = 65;
private int rightMargin = 70;
+ private final boolean displayLegend;
public Plotter() {
this(Unit.NONE, 0);
@@ -139,15 +137,21 @@
this(unit, 0);
}
+ public Plotter(Unit unit, int decimals) {
+ this(unit,decimals,true);
+ }
+
// Note: If decimals > 0 then values must be decimally shifted left
// that many places, i.e. multiplied by Math.pow(10.0, decimals).
- public Plotter(Unit unit, int decimals) {
+ public Plotter(Unit unit, int decimals, boolean displayLegend) {
+ this.displayLegend = displayLegend;
setUnit(unit);
setDecimals(decimals);
enableEvents(AWTEvent.MOUSE_EVENT_MASK);
addMouseListener(new MouseAdapter() {
+ @Override
public void mousePressed(MouseEvent e) {
if (getParent() instanceof PlotterPanel) {
getParent().requestFocusInWindow();
@@ -240,6 +244,7 @@
}
}
+ @Override
public JPopupMenu getComponentPopupMenu() {
if (popupMenu == null) {
popupMenu = new JPopupMenu(Resources.getText("Chart:"));
@@ -330,6 +335,7 @@
}
}
+ @Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
@@ -670,7 +676,7 @@
curValue += "%";
}
int valWidth = fm.stringWidth(curValue);
- String legend = seq.name;
+ String legend = (displayLegend?seq.name:"");
int legendWidth = fm.stringWidth(legend);
if (checkRightMargin(valWidth) || checkRightMargin(legendWidth)) {
// Wait for next repaint
@@ -986,10 +992,12 @@
}
private static class SaveDataFileChooser extends JFileChooser {
+ private static final long serialVersionUID = -5182890922369369669L;
SaveDataFileChooser() {
setFileFilter(new FileNameExtensionFilter("CSV file", "csv"));
}
+ @Override
public void approveSelection() {
File file = getSelectedFile();
if (file != null) {
@@ -1034,6 +1042,7 @@
}
}
+ @Override
public AccessibleContext getAccessibleContext() {
if (accessibleContext == null) {
accessibleContext = new AccessiblePlotter();
@@ -1042,10 +1051,12 @@
}
protected class AccessiblePlotter extends AccessibleJComponent {
+ private static final long serialVersionUID = -3847205410473510922L;
protected AccessiblePlotter() {
setAccessibleName(getText("Plotter.accessibleName"));
}
+ @Override
public String getAccessibleName() {
String name = super.getAccessibleName();
@@ -1076,6 +1087,7 @@
return name;
}
+ @Override
public AccessibleRole getAccessibleRole() {
return AccessibleRole.CANVAS;
}
--- a/jdk/src/share/classes/sun/tools/jconsole/inspector/XMBeanAttributes.java Fri Sep 12 23:31:43 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/XMBeanAttributes.java Wed Sep 17 13:40:40 2008 +0200
@@ -872,8 +872,8 @@
MaximizedCellRenderer(Component comp) {
this.comp = comp;
Dimension d = comp.getPreferredSize();
- if (d.getHeight() > 200) {
- comp.setPreferredSize(new Dimension((int) d.getWidth(), 200));
+ if (d.getHeight() > 220) {
+ comp.setPreferredSize(new Dimension((int) d.getWidth(), 220));
}
}
@Override
--- a/jdk/src/share/classes/sun/tools/jconsole/inspector/XPlotter.java Fri Sep 12 23:31:43 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/XPlotter.java Wed Sep 17 13:40:40 2008 +0200
@@ -34,7 +34,7 @@
JTable table;
public XPlotter(JTable table,
Plotter.Unit unit) {
- super(unit);
+ super(unit,0,false);
this.table = table;
}
@Override
--- a/jdk/src/share/classes/sun/tools/jconsole/inspector/XPlottingViewer.java Fri Sep 12 23:31:43 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/XPlottingViewer.java Wed Sep 17 13:40:40 2008 +0200
@@ -27,14 +27,10 @@
import java.awt.*;
import java.awt.event.*;
-import java.io.*;
import java.util.*;
import java.util.Timer;
-import javax.management.*;
import javax.swing.*;
-import javax.swing.border.*;
-import javax.swing.event.*;
import sun.tools.jconsole.*;
@@ -127,6 +123,7 @@
setBackground(g.getColor());
plotter.paintComponent(g);
}*/
+ @Override
public void actionPerformed(ActionEvent evt) {
plotterCache.remove(key);
Timer t = timerCache.remove(key);
@@ -141,9 +138,11 @@
JTable table) {
final Plotter plotter = new XPlotter(table, Plotter.Unit.NONE) {
Dimension prefSize = new Dimension(400, 170);
+ @Override
public Dimension getPreferredSize() {
return prefSize;
}
+ @Override
public Dimension getMinimumSize() {
return prefSize;
}
@@ -183,42 +182,40 @@
return plotter;
}
- //Create Plotter display
private void setupDisplay(Plotter plotter) {
- //setLayout(new GridLayout(2,0));
- GridBagLayout gbl = new GridBagLayout();
- setLayout(gbl);
+ final JPanel buttonPanel = new JPanel();
+ final GridBagLayout gbl = new GridBagLayout();
+ buttonPanel.setLayout(gbl);
+ setLayout(new BorderLayout());
plotButton = new JButton(Resources.getText("Discard chart"));
plotButton.addActionListener(this);
plotButton.setEnabled(true);
- // Add the display to the top four cells
GridBagConstraints buttonConstraints = new GridBagConstraints();
buttonConstraints.gridx = 0;
buttonConstraints.gridy = 0;
buttonConstraints.fill = GridBagConstraints.VERTICAL;
buttonConstraints.anchor = GridBagConstraints.CENTER;
gbl.setConstraints(plotButton, buttonConstraints);
- add(plotButton);
+ buttonPanel.add(plotButton);
- GridBagConstraints plotterConstraints = new GridBagConstraints();
- plotterConstraints.gridx = 0;
- plotterConstraints.gridy = 1;
- plotterConstraints.weightx = 1;
- //plotterConstraints.gridwidth = (int) plotter.getPreferredSize().getWidth();
- //plotterConstraints.gridheight = (int) plotter.getPreferredSize().getHeight();
- plotterConstraints.fill = GridBagConstraints.VERTICAL;
- gbl.setConstraints(plotter, plotterConstraints);
-
-
- //bordered = new JPanel();
- //bordered.setPreferredSize(new Dimension(400, 250));
- //bordered.add(plotButton);
- //bordered.add(plotter);
-
- //add(bordered);
-
+ if (attributeName != null && attributeName.length()!=0) {
+ final JPanel plotterLabelPanel = new JPanel();
+ final JLabel label = new JLabel(attributeName);
+ final GridBagLayout gbl2 = new GridBagLayout();
+ plotterLabelPanel.setLayout(gbl2);
+ final GridBagConstraints labelConstraints = new GridBagConstraints();
+ labelConstraints.gridx = 0;
+ labelConstraints.gridy = 0;
+ labelConstraints.fill = GridBagConstraints.VERTICAL;
+ labelConstraints.anchor = GridBagConstraints.CENTER;
+ labelConstraints.ipady = 10;
+ gbl2.setConstraints(label, labelConstraints);
+ plotterLabelPanel.add(label);
+ add(plotterLabelPanel, BorderLayout.NORTH);
+ }
setPlotter(plotter);
+ add(buttonPanel, BorderLayout.SOUTH);
repaint();
}