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 ValueModel
s. 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 {@link javax.swing.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 ValueModel
s using the {@link net.helipilot50.stocktrade.displayproject.binding.beans.PropertyConnector} class.
@author Karsten Lentzsch
@version $Revision: 1.14 $
@see ValueModel
@see ConverterFactory
@see javax.swing.JFormattedTextField
@see net.helipilot50.stocktrade.displayproject.binding.beans.PropertyConnector Copyright (c) 2002-2005 JGoodies Karsten Lentzsch. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: o Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. o Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. o Neither the name of JGoodies Karsten Lentzsch nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.