com.jgoodies.binding.value
Class AbstractConverter

java.lang.Object
  extended by AbstractBean
      extended by com.jgoodies.binding.beans.Model
          extended by com.jgoodies.binding.value.AbstractValueModel
              extended by com.jgoodies.binding.value.AbstractConverter
All Implemented Interfaces:
Observable, ValueModel
Direct Known Subclasses:
ConverterFactory.BooleanNegator, ConverterFactory.BooleanToStringConverter, ConverterFactory.DoubleConverter, ConverterFactory.DoubleToIntegerConverter, ConverterFactory.FloatConverter, ConverterFactory.FloatToIntegerConverter, ConverterFactory.IntegerConverter, ConverterFactory.LongConverter, ConverterFactory.LongToIntegerConverter, ConverterFactory.StringConverter

public abstract class AbstractConverter
extends AbstractValueModel

An abstract class that minimizes the effort required to implement a type converter. A type converter is a ValueModel that converts the type of an object being held as a value in one ValueModel into another type.

More formally, a converting ValueModel VM1 converts the type T2 of an object being held as a value in one ValueModel VM2 into another type T1. When reading a value from VM1, instances of T2 are read from VM2 and are converted to T1. When storing a new value to VM1, the type converter will perform the inverse conversion and will convert an instance of T1 to T2.

The conversion must be performed when reading and writing values, as well as in the change notification. This class specifies abstract methods for the conversion from source to output, which is used to convert in #getValue and in the change notification. For the write conversion you must implement #setValue.

Most converters can set values converted by #convertFromSubject with #setValue. However, a converter may reject subject values to be converted and may reject values to be set - as any ValueModel.

Type converters should be used judiciously and only to bridge two ValueModels. Converters often use a generic but weak conversion, and so can be limited w.r.t. to localized formatting conventions.

When binding non-String values to a text UI component, consider using a JFormattedTextField. Formatted text fields provide a powerful means to convert strings to objects and handle many cases that arise around invalid input. Formatted text fields can be bound to ValueModels using the PropertyConnector class.

Version:
$Revision: 1.14 $
Author:
Karsten Lentzsch
See Also:
ValueModel, ConverterFactory, JFormattedTextField, PropertyConnector

Field Summary
protected  ValueModel subject
          Holds the ValueModel that in turn holds the source value.
 
Fields inherited from class com.jgoodies.binding.value.AbstractValueModel
PROPERTYNAME_VALUE
 
Constructor Summary
AbstractConverter(ValueModel subject)
          Constructs an AbstractConverter on the given subject.
 
Method Summary
abstract  java.lang.Object convertFromSubject(java.lang.Object subjectValue)
          Converts a value from the subject to the type or format used by this converter.
 java.lang.Object getValue()
          Converts the subject's value and returns the converted value.
 void release()
          Removes the internal subject value change handler from the subject.
 
Methods inherited from class com.jgoodies.binding.value.AbstractValueModel
addValueChangeListener, booleanValue, doubleValue, fireValueChange, fireValueChange, fireValueChange, fireValueChange, fireValueChange, fireValueChange, fireValueChange, floatValue, getString, intValue, longValue, paramString, removeValueChangeListener, setValue, setValue, setValue, setValue, setValue, toString, valueString
 
Methods inherited from class com.jgoodies.binding.beans.Model
createPropertyChangeSupport, firePropertyChange
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.jgoodies.binding.value.ValueModel
setValue
 
Methods inherited from interface com.jgoodies.binding.beans.Observable
addPropertyChangeListener, removePropertyChangeListener
 

Field Detail

subject

protected final ValueModel subject
Holds the ValueModel that in turn holds the source value.

Constructor Detail

AbstractConverter

public AbstractConverter(ValueModel subject)
Constructs an AbstractConverter on the given subject.

Parameters:
subject - the ValueModel that holds the source value
Throws:
java.lang.NullPointerException - if the subject is null
Method Detail

convertFromSubject

public abstract java.lang.Object convertFromSubject(java.lang.Object subjectValue)
Converts a value from the subject to the type or format used by this converter.

Parameters:
subjectValue - the subject's value
Returns:
the converted value in the type or format used by this converter

getValue

public java.lang.Object getValue()
Converts the subject's value and returns the converted value.

Returns:
the converted subject value

release

public void release()
Removes the internal subject value change handler from the subject. The listener has been registered during construction. Useful to avoid memory leaks, if the subject lives much longer than this converter. As an alternative you can use event listener lists in your ValueModels that implement references with WeakReference.

This converter must not be used anymore once #release has been called.

Subclasses that override this method must call this super implementation.

Since:
1.3


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