2626
2727import org .scijava .convert .ConvertService ;
2828import org .scijava .nwidget .NAbstractWidget ;
29+ import org .scijava .nwidget .NNumberWidget ;
2930import org .scijava .nwidget .NWidget ;
3031import org .scijava .nwidget .NWidgetFactory ;
31- import org .scijava .nwidget .NNumberWidget ;
32+ import org .scijava .nwidget .NWidgets ;
3233import org .scijava .param .ParameterMember ;
3334import org .scijava .plugin .Parameter ;
3435import org .scijava .plugin .Plugin ;
@@ -49,7 +50,7 @@ public class NSwingNumberWidgetFactory implements NSwingWidgetFactory {
4950
5051 @ Override
5152 public boolean supports (final MemberInstance <?> model ) {
52- Member <?> member = model .member ();
53+ final Member <?> member = model .member ();
5354 return ClassUtils .isNumber (member .getRawType ()) &&
5455 member instanceof ParameterMember ;
5556 }
@@ -65,30 +66,13 @@ private class Widget extends NAbstractWidget implements NSwingWidget,
6566 NNumberWidget , AdjustmentListener , ChangeListener
6667 {
6768
68- private final ParameterMember <?> pMember ;
69-
7069 private JPanel panel ;
7170 private JScrollBar scrollBar ;
7271 private JSlider slider ;
7372 private JSpinner spinner ;
7473
7574 public Widget (final MemberInstance <?> model ) {
7675 super (model );
77- pMember = (ParameterMember <?>) model .member ();
78- }
79-
80- // TODO - migrate these to some abstract base class w/ ParameterMember?
81- @ Override
82- public String getLabel () {
83- final String label = pMember .getLabel ();
84- if (label != null && !label .isEmpty ()) return label ;
85-
86- final String name = pMember .getKey ();
87- return name .substring (0 , 1 ).toUpperCase () + name .substring (1 );
88- }
89- @ Override
90- public String getDescription () {
91- return pMember .getDescription ();
9276 }
9377
9478 @ Override
@@ -100,50 +84,50 @@ public JPanel getComponent() {
10084 "[fill,grow|pref]" );
10185 panel .setLayout (layout );
10286
103- final Number min = number (pMember . getMinimumValue ( ), null );
104- final Number max = number (pMember . getMaximumValue ( ), null );
105- final Number softMin = number (pMember . getSoftMinimum ( ), min );
106- final Number softMax = number (pMember . getSoftMaximum ( ), max );
107- final Number stepSize = number (pMember . getStepSize ( ), 1 );
87+ final Number min = number (NWidgets . minimum ( this ), null );
88+ final Number max = number (NWidgets . maximum ( this ), null );
89+ final Number softMin = number (NWidgets . softMinimum ( this ), min );
90+ final Number softMax = number (NWidgets . softMaximum ( this ), max );
91+ final Number stepSize = number (NWidgets . stepSize ( this ), 1 );
10892
10993 // add optional widgets, if specified
110- if (isStyle (SCROLL_BAR_STYLE )) {
94+ if (NWidgets . isStyle (this , SCROLL_BAR_STYLE )) {
11195 int smx = softMax .intValue ();
11296 if (smx < Integer .MAX_VALUE ) smx ++;
11397 scrollBar =
11498 new JScrollBar (Adjustable .HORIZONTAL , softMin .intValue (), 1 , softMin
11599 .intValue (), smx );
116100 scrollBar .setUnitIncrement (stepSize .intValue ());
117- setToolTip (scrollBar );
101+ NSwingWidgets . setToolTip (this , scrollBar );
118102 getComponent ().add (scrollBar );
119103 scrollBar .addAdjustmentListener (this );
120104 }
121- else if (isStyle (SLIDER_STYLE )) {
105+ else if (NWidgets . isStyle (this , SLIDER_STYLE )) {
122106 slider =
123107 new JSlider (softMin .intValue (), softMax .intValue (), softMin .intValue ());
124108 slider .setMajorTickSpacing ((softMax .intValue () - softMin .intValue ()) / 4 );
125109 slider .setMinorTickSpacing (stepSize .intValue ());
126110 slider .setPaintLabels (true );
127111 slider .setPaintTicks (true );
128- setToolTip (slider );
112+ NSwingWidgets . setToolTip (this , slider );
129113 getComponent ().add (slider );
130114 slider .addChangeListener (this );
131115 }
132116
133117 // add spinner widget
134- final Class <?> type = pMember .getRawType ();
135- final Number v = getValue ();
118+ final Class <?> type = model (). member () .getRawType ();
119+ final Number v = modelValue ();
136120 final Number value = v == null ? 0 : v ;
137121 final SpinnerNumberModel spinnerModel =
138122 new SpinnerNumberModelFactory ().createModel (value , min , max , stepSize );
139123 spinner = new JSpinner (spinnerModel );
140124 fixSpinner (type );
141- setToolTip (spinner );
125+ NSwingWidgets . setToolTip (this , spinner );
142126 panel .add (spinner );
143127 limitWidth (200 );
144128 spinner .addChangeListener (this );
145129
146- spinner .setValue (getValue ());
130+ spinner .setValue (modelValue ());
147131 syncSliders ();
148132
149133 return panel ;
@@ -266,7 +250,7 @@ public void run() {
266250 private void syncSliders () {
267251 if (slider != null ) {
268252 // clamp value within slider bounds
269- int value = getValue ().intValue ();
253+ int value = modelValue ().intValue ();
270254 if (value < slider .getMinimum ()) value = slider .getMinimum ();
271255 else if (value > slider .getMaximum ()) value = slider .getMaximum ();
272256 slider .removeChangeListener (this );
@@ -275,38 +259,22 @@ private void syncSliders() {
275259 }
276260 if (scrollBar != null ) {
277261 // clamp value within scroll bar bounds
278- int value = getValue ().intValue ();
262+ int value = modelValue ().intValue ();
279263 if (value < scrollBar .getMinimum ()) value = scrollBar .getMinimum ();
280264 else if (value > scrollBar .getMaximum ()) value = scrollBar .getMaximum ();
281265 scrollBar .removeAdjustmentListener (this );
282- scrollBar .setValue (getValue ().intValue ());
266+ scrollBar .setValue (modelValue ().intValue ());
283267 scrollBar .addAdjustmentListener (this );
284268 }
285269 }
286270
287- private boolean isStyle (final String style ) {
288- final String widgetStyle = pMember .getWidgetStyle ();
289- if (widgetStyle == null ) return style == null ;
290- for (final String s : widgetStyle .split ("," )) {
291- if (s .equals (style )) return true ;
292- }
293- return false ;
294- }
295-
296- private Number getValue () {
271+ private Number modelValue () {
297272 final Number value = (Number ) model ().get ();
298273
299274 // TODO: Decide whether to do this here.
300275// if (isMultipleChoice()) return ensureValidChoice(value);
301276// if (getObjectPool().size() > 0) return ensureValidObject(value);
302277 return value == null ? 0 : value ;
303278 }
304-
305- /** Assigns the model's description as the given component's tool tip. */
306- private void setToolTip (final JComponent c ) {
307- final String desc = pMember .getDescription ();
308- if (desc == null || desc .isEmpty ()) return ;
309- c .setToolTipText (desc );
310- }
311279 }
312280}
0 commit comments