com.jgoodies.binding.adapter

Class SpinnerAdapterFactory


public final class SpinnerAdapterFactory
extends java.lang.Object

A factory that vends SpinnerModel implementations that are bound to a ValueModel. Can be used to bind a ValueModel to instances of JSpinner.

To keep the ValueModel and SpinnerModel synchronized, this class listens to changes in both sides and updates the other silently, i.e. without firing a duplicate change event.

Constraints: The ValueModel's type must be compatible with the type required by the referenced SpinnerModel. For example a SpinnerNumberModel requires Number values. Example:

 // General Connection
 ValueModel   levelModel   = new PropertyAdapter(settings, "level", true);
 SpinnerModel spinnerModel = new SpinnerNumberModel(9, 5, 10, 1);
 Object defaultValue       = new Integer(9);
 SpinnerAdapterFactory.connect(spinnerModel, levelModel, defaultValue);
 JSpinner levelSpinner = new JSpinner(spinnerModel);

 // Short Form
 ValueModel levelModel = new PropertyAdapter(settings, "level", true);
 SpinnerNumberModel spinnerModel =
     SpinnerAdapterFactory.createNumberAdapter(levelModel, 5, 10, 1);
 JSpinner levelSpinner = new JSpinner(spinnerModel);
 
Version:
$Revision: 1.10 $
Author:
Karsten Lentzsch
Since:
1.1
See Also:
ValueModel, SpinnerModel, javax.swing.JSpinner

Method Summary

static void
connect(SpinnerModel spinnerModel, ValueModel valueModel, Object defaultValue)
Connects the given ValueModel and SpinnerModel by synchronizing their values.
static SpinnerDateModel
createDateAdapter(ValueModel valueModel, Date defaultDate)
Creates and returns a SpinnerDateModel bound to the given valueModel.
static SpinnerDateModel
createDateAdapter(ValueModel valueModel, Date defaultDate, Comparable start, Comparable end, int calendarField)
Creates and returns a SpinnerDateModel that represents a sequence of dates and is bound to the given valueModel.
static SpinnerNumberModel
createNumberAdapter(ValueModel valueModel, Number defaultValue, Number> minValue, Number> maxValue, Number stepSize)
Creates and returns a SpinnerNumberModel that is connected to the given ValueModel and that honors the specified minimum, maximum and step values.
static SpinnerNumberModel
createNumberAdapter(ValueModel valueModel, int defaultValue, int minValue, int maxValue, int stepSize)
Creates and returns a SpinnerNumberModel that is connected to the given ValueModel and that honors the specified minimum, maximum and step values.

Method Details

connect

public static void connect(SpinnerModel spinnerModel,
                           ValueModel valueModel,
                           Object defaultValue)
Connects the given ValueModel and SpinnerModel by synchronizing their values.
Parameters:
spinnerModel - the underlying SpinnerModel implementation
valueModel - provides a value
defaultValue - the value used if the valueModel's value is null

createDateAdapter

public static SpinnerDateModel createDateAdapter(ValueModel valueModel,
                                                 Date defaultDate)
Creates and returns a SpinnerDateModel bound to the given valueModel. The calendarField is equal to Calendar.DAY_OF_MONTH; there are no start/end limits.
Parameters:
valueModel - a Date typed model that holds the spinner value
defaultDate - the date used if the valueModel's value is null
Returns:
a SpinnerDateModel bound to the given valueModel without start and end limits using Calendar.DAY_OF_MONTH as calendar field

createDateAdapter

public static SpinnerDateModel createDateAdapter(ValueModel valueModel,
                                                 Date defaultDate,
                                                 Comparable start,
                                                 Comparable end,
                                                 int calendarField)
Creates and returns a SpinnerDateModel that represents a sequence of dates and is bound to the given valueModel. The dates are between start and end. The nextValue and previousValue methods compute elements of the sequence by advancing or reversing the current date value by the calendarField time unit. For a precise description of what it means to increment or decrement a Calendar field, see the add method in java.util.Calendar.

The start and end parameters can be null to indicate that the range doesn't have an upper or lower bound. If value or calendarField is null, or if both start and end are specified and minimum > maximum then an IllegalArgumentException is thrown. Similarly if (minimum <= value <= maximum) is false, an IllegalArgumentException is thrown.

This method has not been tested.

Parameters:
valueModel - a Date typed model that holds the spinner value
defaultDate - the date used if the valueModel's value is null
start - the first date in the sequence or null
end - the last date in the sequence or null
calendarField - one of
  • Calendar.ERA
  • Calendar.YEAR
  • Calendar.MONTH
  • Calendar.WEEK_OF_YEAR
  • Calendar.WEEK_OF_MONTH
  • Calendar.DAY_OF_MONTH
  • Calendar.DAY_OF_YEAR
  • Calendar.DAY_OF_WEEK
  • Calendar.DAY_OF_WEEK_IN_MONTH
  • Calendar.AM_PM
  • Calendar.HOUR
  • Calendar.HOUR_OF_DAY
  • Calendar.MINUTE
  • Calendar.SECOND
  • Calendar.MILLISECOND
Returns:
a SpinnerDateModel bound to the given valueModel using the specified start and end dates and calendar field.
See Also:
java.util.Calendar, Date

createNumberAdapter

public static SpinnerNumberModel createNumberAdapter(ValueModel valueModel,
                                                     Number defaultValue,
                                                     Number> minValue,
                                                     Number> maxValue,
                                                     Number stepSize)
Creates and returns a SpinnerNumberModel that is connected to the given ValueModel and that honors the specified minimum, maximum and step values.
Parameters:
valueModel - a Number typed model that holds the spinner value
defaultValue - the number used if the valueModel's value is null
minValue - the lower bound of the spinner number
maxValue - the upper bound of the spinner number
stepSize - used to increment and decrement the current value
Returns:
a SpinnerNumberModel that is connected to the given ValueModel

createNumberAdapter

public static SpinnerNumberModel createNumberAdapter(ValueModel valueModel,
                                                     int defaultValue,
                                                     int minValue,
                                                     int maxValue,
                                                     int stepSize)
Creates and returns a SpinnerNumberModel that is connected to the given ValueModel and that honors the specified minimum, maximum and step values.
Parameters:
valueModel - an Integer typed model that holds the spinner value
defaultValue - the number used if the valueModel's value is null
minValue - the lower bound of the spinner number
maxValue - the upper bound of the spinner number
stepSize - used to increment and decrement the current value
Returns:
a SpinnerNumberModel that is connected to the given ValueModel

Copyright © 2002-2007 JGoodies Karsten Lentzsch. All Rights Reserved.