com.jgoodies.binding.value
Class DefaultComponentValueModel

java.lang.Object
  extended by com.jgoodies.common.bean.Bean
      extended by com.jgoodies.binding.beans.Model
          extended by com.jgoodies.binding.value.AbstractValueModel
              extended by com.jgoodies.binding.value.AbstractWrappedValueModel
                  extended by com.jgoodies.binding.value.DefaultComponentValueModel
All Implemented Interfaces:
ComponentModel, ComponentValueModel, ValueModel, com.jgoodies.common.bean.ObservableBean, com.jgoodies.common.bean.ObservableBean2, Serializable

public final class DefaultComponentValueModel
extends AbstractWrappedValueModel

A ValueModel that provides relevant GUI state in presentation models. It provides bound properties for the frequently used JComponent state enabled,visible and JTextComponent state editable. ComponentValueModels can be used to set these properties at the presentation model layer; any ComponentValueModel property change will be reflected by components bound to that ComponentValueModel.

The ComponentValueModel is similar to the Swing Action class. If you disable an Action, all buttons and menu items bound to that Action will be disabled. If you disable a ComponentValueModel, all components bound to that ComponentValueModel will be disabled. If you set the ComponentValueModel to invisible, the component bound to it will become invisible. If you set a ComponentValueModel to non-editable, the JTextComponents bound to it will become non-editable.

Since version 1.1, PresentationModels can vend ComponentValueModels using #getComponentModel(String) and #getBufferedComponentModel(String). Multiple calls to these factory methods return the same ComponentValueModel.

The BasicComponentFactory and the Bindings class check if the ValueModel provided to create/bind a Swing component is a ComponentValueModel. If so, the ComponentValueModel properties will be synchronized with the associated Swing component properties.

It is recommended to use ComponentValueModels only for those models that are bound to view components that require GUI state changes.

Example Code:

 final class AlbumView {

  ...

     private void initComponents() {
         // No state modifications required for the name field.
         nameField = BasicComponentFactory.createTextField(
             presentationModel.getModel(Album.PROPERTY_NAME));
         ...
         // Enablement shall change for the composer field
         composerField = BasicComponentFactory.createTextField(
             presentationModel.getComponentModel(Album.PROPERTY_COMPOSER));
         ...
     }

  ...

 }


 public final class AlbumPresentationModel extends PresentationModel {

  ...

     private void updateComposerEnablement(boolean enabled) {
         getComponentModel(Album.PROPERTY_COMPOSER).setEnabled(enabled);
     }

  ...

 }
 

As of the Binding version 2.0 the ComponentValueModel feature is implemented for text components, radio buttons, check boxes, combo boxes, and lists. JColorChoosers bound using the Bindings class will ignore ComponentValueModel state.

Since:
2.4
Version:
$Revision: 1.15 $
Author:
Karsten Lentzsch
See Also:
PresentationModel.getComponentModel(String), PresentationModel.getBufferedComponentModel(String), BasicComponentFactory, Bindings, Serialized Form

Field Summary
 
Fields inherited from class com.jgoodies.common.bean.Bean
changeSupport
 
Fields inherited from interface com.jgoodies.binding.value.ValueModel
PROPERTY_VALUE
 
Fields inherited from interface com.jgoodies.binding.value.ComponentModel
PROPERTY_EDITABLE, PROPERTY_ENABLED, PROPERTY_VISIBLE
 
Constructor Summary
DefaultComponentValueModel(ValueModel wrappee)
          Constructs a DefaultComponentValueModel that wraps the given ValueModel and adds ComponentModel Properties.
 
Method Summary
protected  PropertyChangeListener createValueChangeHandler()
           
 Object getValue()
          Returns this model's current subject value.
 void setValue(Object newValue)
          Sets the given value as new subject value.
 
Methods inherited from class com.jgoodies.binding.value.AbstractWrappedValueModel
getWrappee, isEditable, isEnabled, isVisible, release, setEditable, setEnabled, setVisible
 
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 com.jgoodies.common.bean.Bean
addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, addVetoableChangeListener, fireIndexedPropertyChange, fireIndexedPropertyChange, fireIndexedPropertyChange, fireMultiplePropertiesChanged, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, getPropertyChangeListeners, getPropertyChangeListeners, getVetoableChangeListeners, getVetoableChangeListeners, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, removeVetoableChangeListener
 
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
addValueChangeListener, removeValueChangeListener
 
Methods inherited from interface com.jgoodies.common.bean.ObservableBean2
addPropertyChangeListener, getPropertyChangeListeners, getPropertyChangeListeners, removePropertyChangeListener
 
Methods inherited from interface com.jgoodies.common.bean.ObservableBean
addPropertyChangeListener, removePropertyChangeListener
 

Constructor Detail

DefaultComponentValueModel

public DefaultComponentValueModel(ValueModel wrappee)
Constructs a DefaultComponentValueModel that wraps the given ValueModel and adds ComponentModel Properties.

Parameters:
wrappee - the underlying or wrapped ValueModel
Method Detail

getValue

public Object getValue()
Returns this model's current subject value.

Returns:
this model's current subject value.

setValue

public void setValue(Object newValue)
Sets the given value as new subject value.

Parameters:
newValue - the value to set

createValueChangeHandler

protected PropertyChangeListener createValueChangeHandler()
Specified by:
createValueChangeHandler in class AbstractWrappedValueModel


Copyright © 2002-2013 JGoodies Software GmbH. All Rights Reserved.