Skip to content

Commit b700a6e

Browse files
committed
Update JExtendedSpinner to the latest NB version
- adds support for mouse wheel - fixes appearance problems on Windows Classic LAF
1 parent 06ef2aa commit b700a6e

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

visualvm/uisupport/src/com/sun/tools/visualvm/uisupport/JExtendedSpinner.java

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,15 @@
2525

2626
package com.sun.tools.visualvm.uisupport;
2727

28+
import java.awt.Dimension;
2829
import java.awt.Font;
30+
import java.awt.event.MouseWheelEvent;
31+
import java.awt.event.MouseWheelListener;
2932
import javax.swing.JSpinner;
33+
import javax.swing.JTextField;
3034
import javax.swing.SpinnerModel;
3135
import javax.swing.UIManager;
36+
import org.netbeans.lib.profiler.ui.UIUtils;
3237

3338

3439
/**
@@ -40,6 +45,18 @@
4045
public class JExtendedSpinner extends JSpinner {
4146
//~ Constructors -------------------------------------------------------------------------------------------------------------
4247

48+
private static int defaultSpinnerHeight = -1;
49+
50+
public static int getDefaultSpinnerHeight() {
51+
if (defaultSpinnerHeight == -1) {
52+
defaultSpinnerHeight = new JTextField().getPreferredSize().height;
53+
}
54+
55+
return defaultSpinnerHeight;
56+
}
57+
58+
//~ Constructors -------------------------------------------------------------------------------------------------------------
59+
4360
public JExtendedSpinner() {
4461
super();
4562
((JSpinner.DefaultEditor) getEditor()).getTextField().setFont(UIManager.getFont("Label.font")); // NOI18N
@@ -50,6 +67,7 @@ public void keyPressed(final java.awt.event.KeyEvent e) {
5067
}
5168
}
5269
});
70+
configureWheelListener();
5371
}
5472

5573
public JExtendedSpinner(SpinnerModel model) {
@@ -62,6 +80,7 @@ public void keyPressed(final java.awt.event.KeyEvent e) {
6280
}
6381
}
6482
});
83+
configureWheelListener();
6584
}
6685

6786
//~ Methods ------------------------------------------------------------------------------------------------------------------
@@ -86,4 +105,35 @@ public void fixAccessibility() {
86105
.setAccessibleDescription(getAccessibleContext().getAccessibleDescription());
87106
}
88107
}
108+
109+
110+
public Dimension getPreferredSize() {
111+
if (UIUtils.isWindowsClassicLookAndFeel()) {
112+
return new Dimension(super.getPreferredSize().width, getDefaultSpinnerHeight());
113+
} else {
114+
return super.getPreferredSize();
115+
}
116+
}
117+
118+
public Dimension getMinimumSize() {
119+
if (UIUtils.isWindowsClassicLookAndFeel()) {
120+
return getPreferredSize();
121+
} else {
122+
return super.getMinimumSize();
123+
}
124+
}
125+
126+
127+
private void configureWheelListener() {
128+
addMouseWheelListener(new MouseWheelListener() {
129+
public void mouseWheelMoved(MouseWheelEvent e) {
130+
if (e.getScrollType() != MouseWheelEvent.WHEEL_UNIT_SCROLL) return;
131+
Object newValue = (e.getWheelRotation() < 0 ?
132+
JExtendedSpinner.this.getNextValue() :
133+
JExtendedSpinner.this.getPreviousValue());
134+
if (newValue != null) JExtendedSpinner.this.setValue(newValue);
135+
}
136+
});
137+
}
138+
89139
}

0 commit comments

Comments
 (0)