com.guiseframework.component
Class AbstractActionValueControl<V>

java.lang.Object
  extended by com.globalmentor.beans.BoundPropertyObject
      extended by com.guiseframework.event.GuiseBoundPropertyObject
          extended by com.guiseframework.model.ui.AbstractPresentationModel
              extended by com.guiseframework.component.AbstractComponent
                  extended by com.guiseframework.component.AbstractControl
                      extended by com.guiseframework.component.AbstractActionControl
                          extended by com.guiseframework.component.AbstractActionValueControl<V>
Type Parameters:
V - The type of value the control represents.
All Implemented Interfaces:
com.globalmentor.beans.PropertyBindable, com.globalmentor.beans.PropertyConstrainable, ActionControl, ActionValueControl<V>, Component, Control, InputFocusableComponent, LabelDisplayableComponent, ValueControl<V>, ValuedComponent<V>, ActionListenable, ActionModel, Displayable, Enableable, InfoModel, LabelModel, Model, PresentationModel, Valued<V>, ValueModel<V>, DepictedObject
Direct Known Subclasses:
AbstractBooleanSelectActionControl, AbstractSelectActionValueControl

public abstract class AbstractActionValueControl<V>
extends AbstractActionControl
implements ActionValueControl<V>

Abstract implementation of an action control containing a value. The component valid status is updated before a change in the ValueModel.VALUE_PROPERTY or the ValueModel.VALIDATOR_PROPERTY is fired.

Author:
Garret Wilson

Nested Class Summary
 
Nested classes/interfaces inherited from class com.guiseframework.component.AbstractComponent
AbstractComponent.AbstractFlyoverFrameStrategy<S extends Component>, AbstractComponent.AbstractFlyoverStrategy<S extends Component>, AbstractComponent.DefaultFlyoverStrategy<S extends Component>
 
Nested classes/interfaces inherited from interface com.guiseframework.component.Control
Control.Status
 
Field Summary
 
Fields inherited from class com.globalmentor.beans.BoundPropertyObject
NO_PROPERTY_CHANGE_LISTENERS, NO_VETOABLE_CHANGE_LISTENERS
 
Fields inherited from interface com.guiseframework.component.ActionValueControl
VALUE_GLYPH_URI_PROPERTY
 
Fields inherited from interface com.guiseframework.component.ActionControl
ROLLOVER_PROPERTY
 
Fields inherited from interface com.guiseframework.component.ValueControl
CONVERTER_PROPERTY
 
Fields inherited from interface com.guiseframework.component.Control
STATUS_PROPERTY
 
Fields inherited from interface com.guiseframework.model.Enableable
ENABLED_PROPERTY
 
Fields inherited from interface com.guiseframework.model.ValueModel
VALIDATOR_PROPERTY, VALUE_PROPERTY
 
Fields inherited from interface com.guiseframework.component.LabelDisplayableComponent
ICON_DISPLAYED_PROPERTY, LABEL_DISPLAYED_PROPERTY
 
Constructor Summary
AbstractActionValueControl(InfoModel infoModel, ActionModel actionModel, ValueModel<V> valueModel, Enableable enableable)
          Info model, action model, value model, and enableable object constructor.
 
Method Summary
 void clearValue()
          Clears the value by setting the value to null, which may be invalid according to any installed validators.
protected  boolean determineValid()
          Checks the state of the component for validity.
protected
<VV> void
firePropertyChange(java.lang.String propertyName, VV oldValue, VV newValue)
          Reports that a bound property has changed.
 V getDefaultValue()
           
 Validator<V> getValidator()
           
 V getValue()
           
 java.lang.Class<V> getValueClass()
           
 java.net.URI getValueGlyphURI(V value)
          Retrieves the icon associated with a given value.
protected  ValueModel<V> getValueModel()
           
 boolean isValidValue()
          Determines whether the value of this model is valid.
 void reset()
          Resets the control to its default value.
 void resetValue()
          Resets the value to a default value, which may be invalid according to any installed validators.
 void setValidator(Validator<V> newValidator)
          Sets the validator.
 void setValue(V newValue)
          Sets the input value.
 void setValueGlyphURI(V value, java.net.URI newValueIcon)
          Sets the URI of the icon associated with a value.
 boolean validate()
          Validates the user interface of this component and all child components.
 void validateValue()
          Validates the value of this model, throwing an exception if the model is not valid.
 
Methods inherited from class com.guiseframework.component.AbstractActionControl
addActionListener, fireActionPerformed, fireActionPerformed, getActionListeners, getActionModel, isIconDisplayed, isLabelDisplayed, isRollover, performAction, performAction, removeActionListener, setIconDisplayed, setLabelDisplayed, setRollover
 
Methods inherited from class com.guiseframework.component.AbstractControl
determineStatus, getEnableable, getStatus, isEnabled, setEnabled, setNotification, setStatus, updateStatus, updateValid
 
Methods inherited from class com.guiseframework.component.AbstractComponent
addCommandListener, addExportStrategy, addImportStrategy, addKeyListener, addMouseListener, addNotificationListener, addPreferenceProperty, applyTheme, applyTheme, depict, dispatchInputEvent, equals, exportTransfer, fireInputEvent, fireNotified, fireNotified, getAncestor, getCommandListeners, getComponentByID, getComponentByName, getComponentOrientation, getConstraints, getDepictID, getDepictor, getDescription, getDescriptionContentType, getDirtyComponents, getDirtyComponents, getEventListenerManager, getFlyoverStrategy, getGlyphURI, getInfo, getInfoContentType, getInfoModel, getInputStrategy, getKeyListeners, getLabel, getLabelContentType, getMouseListeners, getName, getNotification, getNotifications, getNotifications, getOrientation, getParent, getPreferenceProperties, getRootComponent, getTheme, hasAncestor, hasCommandListeners, hashCode, hasKeyListeners, hasMouseListeners, importTransfer, initialize, isDragEnabled, isDropEnabled, isFlyoverEnabled, isPreferenceProperty, isThemeApplied, isValid, loadPreferences, notify, processEvent, removeCommandListener, removeExportStrategy, removeImportStrategy, removeKeyListener, removeMouseListener, removeNotificationListener, removePreferenceProperty, resetTheme, savePreferences, setConstraints, setDepicted, setDescription, setDescriptionContentType, setDragEnabled, setDropEnabled, setFlyoverEnabled, setFlyoverStrategy, setGlyphURI, setInfo, setInfoContentType, setInputStrategy, setLabel, setLabelContentType, setName, setOrientation, setParent, setThemeApplied, setValid, toString, update, updateTheme
 
Methods inherited from class com.guiseframework.model.ui.AbstractPresentationModel
BorderLineFarColor, BorderLineFarExtent, BorderLineFarStyle, BorderLineNearColor, BorderLineNearExtent, BorderLineNearStyle, BorderPageFarColor, BorderPageFarExtent, BorderPageFarStyle, BorderPageNearColor, BorderPageNearExtent, BorderPageNearStyle, getBackgroundColor, getBorderColor, getBorderExtent, getBorderStyle, getCornerArcSize, getCornerLineFarPageFarArcSize, getCornerLineFarPageNearArcSize, getCornerLineNearPageFarArcSize, getCornerLineNearPageNearArcSize, getCursor, getExtent, getFontFamilies, getFontSize, getFontStyle, getFontWeight, getLabelFontFamilies, getLabelFontSize, getLabelFontStyle, getLabelFontWeight, getLabelTextColor, getLineExtent, getMarginExtent, getMarginLineFarExtent, getMarginLineNearExtent, getMarginPageFarExtent, getMarginPageNearExtent, getOpacity, getPaddingExtent, getPaddingLineFarExtent, getPaddingLineNearExtent, getPaddingPageFarExtent, getPaddingPageNearExtent, getPageExtent, getStyleID, getTextColor, isDisplayed, isTooltipEnabled, isVisible, setBackgroundColor, setBorderColor, setBorderColor, setBorderExtent, setBorderExtent, setBorderLineFarColor, setBorderLineFarExtent, setBorderLineFarStyle, setBorderLineNearColor, setBorderLineNearExtent, setBorderLineNearStyle, setBorderPageFarColor, setBorderPageFarExtent, setBorderPageFarStyle, setBorderPageNearColor, setBorderPageNearExtent, setBorderPageNearStyle, setBorderStyle, setBorderStyle, setCornerArcSize, setCornerArcSize, setCornerLineFarPageFarArcSize, setCornerLineFarPageNearArcSize, setCornerLineNearPageFarArcSize, setCornerLineNearPageNearArcSize, setCursor, setDisplayed, setExtent, setFontFamilies, setFontSize, setFontStyle, setFontWeight, setLabelFontFamilies, setLabelFontSize, setLabelFontStyle, setLabelFontWeight, setLabelTextColor, setLineExtent, setMarginExtent, setMarginExtent, setMarginLineFarExtent, setMarginLineNearExtent, setMarginPageFarExtent, setMarginPageNearExtent, setOpacity, setPaddingExtent, setPaddingExtent, setPaddingLineFarExtent, setPaddingLineNearExtent, setPaddingPageFarExtent, setPaddingPageNearExtent, setPageExtent, setStyleID, setTextColor, setTooltipEnabled, setVisible
 
Methods inherited from class com.guiseframework.event.GuiseBoundPropertyObject
getSession
 
Methods inherited from class com.globalmentor.beans.BoundPropertyObject
addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, addVetoableChangeListener, createPostponedPropertyChangeEvent, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, getForwardPropertyChangeListener, getPropertyChangeListeners, getPropertyChangeListeners, getPropertyChangeSupport, getRepeatPropertyChangeListener, getRepeatVetoableChangeListener, getVetoableChangeListeners, getVetoableChangeListeners, getVetoableChangeSupport, hasPropertyChangeListeners, hasVetoableChangeListeners, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, removeVetoableChangeListener
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.guiseframework.component.ActionControl
isRollover, setRollover
 
Methods inherited from interface com.guiseframework.model.ActionModel
getActionListeners, performAction, performAction
 
Methods inherited from interface com.guiseframework.event.ActionListenable
addActionListener, removeActionListener
 
Methods inherited from interface com.guiseframework.component.Control
getStatus
 
Methods inherited from interface com.guiseframework.model.Enableable
isEnabled, setEnabled
 

Constructor Detail

AbstractActionValueControl

public AbstractActionValueControl(InfoModel infoModel,
                                  ActionModel actionModel,
                                  ValueModel<V> valueModel,
                                  Enableable enableable)
Info model, action model, value model, and enableable object constructor.

Parameters:
infoModel - The component info model.
actionModel - The component action model.
valueModel - The component value model.
enableable - The enableable object in which to store enabled status.
Throws:
java.lang.NullPointerException - if the given info model, action model, and/or enableable object is null.
Method Detail

getValueModel

protected ValueModel<V> getValueModel()
Returns:
The value model used by this component.

getValueGlyphURI

public java.net.URI getValueGlyphURI(V value)
Retrieves the icon associated with a given value.

Specified by:
getValueGlyphURI in interface ActionValueControl<V>
Parameters:
value - The value for which an associated icon should be returned, or null to retrieve the icon associated with the null value.
Returns:
The value icon URI, which may be a resource URI, or null if the value has no associated icon URI.

setValueGlyphURI

public void setValueGlyphURI(V value,
                             java.net.URI newValueIcon)
Sets the URI of the icon associated with a value. This method fires a property change event for the changed icon if its value changes.

Specified by:
setValueGlyphURI in interface ActionValueControl<V>
Parameters:
value - The value with which the icon should be associated, or null if the icon should be associated with the null value.
newValueIcon - The new URI of the value icon, which may be a resource URI.
See Also:
ActionValueControl.VALUE_GLYPH_URI_PROPERTY

firePropertyChange

protected <VV> void firePropertyChange(java.lang.String propertyName,
                                       VV oldValue,
                                       VV newValue)
Reports that a bound property has changed. This version first updates the valid status if the value is reported as being changed.

Overrides:
firePropertyChange in class com.globalmentor.beans.BoundPropertyObject
Parameters:
propertyName - The name of the property being changed.
oldValue - The old property value.
newValue - The new property value.
See Also:
BoundPropertyObject.firePropertyChange(PropertyChangeEvent), BoundPropertyObject.hasPropertyChangeListeners(String), GenericPropertyChangeEvent, GenericPropertyChangeListener

determineValid

protected boolean determineValid()
Checks the state of the component for validity. This version checks the validity of the value model.

Overrides:
determineValid in class AbstractComponent
Returns:
true if the component and all children passes all validity tests, else false.

validate

public boolean validate()
Validates the user interface of this component and all child components. The component will be updated with error information. This version validates the associated value model.

Specified by:
validate in interface Component
Overrides:
validate in class AbstractComponent
Returns:
The current state of AbstractComponent.isValid() as a convenience.

reset

public void reset()
Resets the control to its default value. This version resets the control value.

Specified by:
reset in interface Control
Overrides:
reset in class AbstractControl
See Also:
resetValue()

getDefaultValue

public V getDefaultValue()
Specified by:
getDefaultValue in interface ValueModel<V>
Returns:
The default value.

getValue

public V getValue()
Specified by:
getValue in interface ValuedComponent<V>
Specified by:
getValue in interface Valued<V>
Specified by:
getValue in interface ValueModel<V>
Returns:
The input value, or null if there is no input value.

setValue

public void setValue(V newValue)
              throws java.beans.PropertyVetoException
Sets the input value. This is a bound property that only fires a change event when the new value is different via the equals() method. If a validator is installed, the value will first be validated before the current value is changed. Validation always occurs if a validator is installed, even if the value is not changing. If the value change is vetoed by the installed validator, the validation exception will be accessible via Throwable.getCause().

Specified by:
setValue in interface ValuedComponent<V>
Specified by:
setValue in interface Valued<V>
Specified by:
setValue in interface ValueModel<V>
Parameters:
newValue - The input value of the model.
Throws:
java.beans.PropertyVetoException - if the provided value is not valid or the change has otherwise been vetoed.
See Also:
getValidator(), ValueModel.VALUE_PROPERTY

clearValue

public void clearValue()
Clears the value by setting the value to null, which may be invalid according to any installed validators. No validation occurs.

Specified by:
clearValue in interface ValueModel<V>
See Also:
ValueModel.VALUE_PROPERTY

resetValue

public void resetValue()
Resets the value to a default value, which may be invalid according to any installed validators. No validation occurs.

Specified by:
resetValue in interface ValueModel<V>
See Also:
ValueModel.VALUE_PROPERTY

getValidator

public Validator<V> getValidator()
Specified by:
getValidator in interface ValueModel<V>
Returns:
The validator for this model, or null if no validator is installed.

setValidator

public void setValidator(Validator<V> newValidator)
Sets the validator. This is a bound property

Specified by:
setValidator in interface ValueModel<V>
Parameters:
newValidator - The validator for this model, or null if no validator should be used.
See Also:
ValueModel.VALIDATOR_PROPERTY

isValidValue

public boolean isValidValue()
Determines whether the value of this model is valid.

Specified by:
isValidValue in interface ValueModel<V>
Returns:
Whether the value of this model is valid.

validateValue

public void validateValue()
                   throws ValidationException
Validates the value of this model, throwing an exception if the model is not valid.

Specified by:
validateValue in interface ValueModel<V>
Throws:
ValidationException - if the value of this model is not valid.

getValueClass

public java.lang.Class<V> getValueClass()
Specified by:
getValueClass in interface ValuedComponent<V>
Specified by:
getValueClass in interface ValueModel<V>
Returns:
The class representing the type of value this model can hold.


Copyright © 2005-2010 GlobalMentor, Inc. All Rights Reserved.