25
25
26
26
package com .sun .tools .visualvm .uisupport ;
27
27
28
+ import java .awt .Dimension ;
28
29
import java .awt .Font ;
30
+ import java .awt .event .MouseWheelEvent ;
31
+ import java .awt .event .MouseWheelListener ;
29
32
import javax .swing .JSpinner ;
33
+ import javax .swing .JTextField ;
30
34
import javax .swing .SpinnerModel ;
31
35
import javax .swing .UIManager ;
36
+ import org .netbeans .lib .profiler .ui .UIUtils ;
32
37
33
38
34
39
/**
40
45
public class JExtendedSpinner extends JSpinner {
41
46
//~ Constructors -------------------------------------------------------------------------------------------------------------
42
47
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
+
43
60
public JExtendedSpinner () {
44
61
super ();
45
62
((JSpinner .DefaultEditor ) getEditor ()).getTextField ().setFont (UIManager .getFont ("Label.font" )); // NOI18N
@@ -50,6 +67,7 @@ public void keyPressed(final java.awt.event.KeyEvent e) {
50
67
}
51
68
}
52
69
});
70
+ configureWheelListener ();
53
71
}
54
72
55
73
public JExtendedSpinner (SpinnerModel model ) {
@@ -62,6 +80,7 @@ public void keyPressed(final java.awt.event.KeyEvent e) {
62
80
}
63
81
}
64
82
});
83
+ configureWheelListener ();
65
84
}
66
85
67
86
//~ Methods ------------------------------------------------------------------------------------------------------------------
@@ -86,4 +105,35 @@ public void fixAccessibility() {
86
105
.setAccessibleDescription (getAccessibleContext ().getAccessibleDescription ());
87
106
}
88
107
}
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
+
89
139
}
0 commit comments