37
37
import java .awt .event .AdjustmentListener ;
38
38
import java .awt .event .FocusEvent ;
39
39
import java .awt .event .FocusListener ;
40
+ import java .awt .event .MouseWheelEvent ;
41
+ import java .awt .event .MouseWheelListener ;
40
42
import java .math .BigDecimal ;
41
43
import java .math .BigInteger ;
42
44
import java .text .DecimalFormat ;
67
69
*/
68
70
@ Plugin (type = InputWidget .class )
69
71
public class SwingNumberWidget extends SwingInputWidget <Number > implements
70
- NumberWidget <JPanel >, AdjustmentListener , ChangeListener
72
+ NumberWidget <JPanel >, AdjustmentListener , ChangeListener , MouseWheelListener
71
73
{
72
74
73
75
@ Parameter
@@ -110,6 +112,7 @@ public void set(final WidgetModel model) {
110
112
setToolTip (scrollBar );
111
113
getComponent ().add (scrollBar );
112
114
scrollBar .addAdjustmentListener (this );
115
+ scrollBar .addMouseWheelListener (this );
113
116
}
114
117
else if (model .isStyle (NumberWidget .SLIDER_STYLE )) {
115
118
slider =
@@ -121,6 +124,7 @@ else if (model.isStyle(NumberWidget.SLIDER_STYLE)) {
121
124
setToolTip (slider );
122
125
getComponent ().add (slider );
123
126
slider .addChangeListener (this );
127
+ slider .addMouseWheelListener (this );
124
128
}
125
129
126
130
// add spinner widget
@@ -171,6 +175,17 @@ else if (source == spinner) {
171
175
}
172
176
updateModel ();
173
177
}
178
+
179
+ // -- MouseWheelListener methods --
180
+
181
+ @ Override
182
+ public void mouseWheelMoved (final MouseWheelEvent e ) {
183
+ int value = getValue ().intValue () + e .getWheelRotation ();
184
+ value = Math .min (value , this .get ().getMax ().intValue ());
185
+ value = Math .max (value , this .get ().getMin ().intValue ());
186
+ spinner .setValue (value );
187
+ syncSliders ();
188
+ }
174
189
175
190
// -- Helper methods --
176
191
0 commit comments