com.guiseframework.component
Class AbstractDialogFrame<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.AbstractCompositeComponent
                      extended by com.guiseframework.component.AbstractMultipleCompositeComponent
                          extended by com.guiseframework.component.AbstractArrayCompositeComponent
                              extended by com.guiseframework.component.AbstractEnumCompositeComponent<AbstractFrame.FrameComponent>
                                  extended by com.guiseframework.component.AbstractFrame
                                      extended by com.guiseframework.component.AbstractDialogFrame<V>
Type Parameters:
V - The value to be communicated.
All Implemented Interfaces:
com.globalmentor.beans.PropertyBindable, com.globalmentor.beans.PropertyConstrainable, Component, CompositeComponent, ContentComponent, Control, DialogFrame<V>, Frame, InputFocusableComponent, InputFocusGroupComponent, ModalComponent<Frame.Mode>, ValueControl<V>, ValuedComponent<V>, Displayable, Enableable, InfoModel, LabelModel, Model, PresentationModel, Valued<V>, ValueModel<V>, DepictedObject
Direct Known Subclasses:
AbstractOptionDialogFrame, CalendarDialogFrame, DefaultDialogFrame

public abstract class AbstractDialogFrame<V>
extends AbstractFrame
implements DialogFrame<V>

Abstract implementation of a frame meant for communication of a value. A dialog frame by default is modal and movable but not resizable. The component valid status is updated before a change in the ValueModel.VALUE_PROPERTY or the ValueModel.VALIDATOR_PROPERTY is fired.

This implementation binds the action AbstractFrame.getCloseActionPrototype() to the command ProcessCommand.CONTINUE.

Author:
Garret Wilson

Nested Class Summary
 
Nested classes/interfaces inherited from class com.guiseframework.component.AbstractFrame
AbstractFrame.DefaultPrototypeProvider, AbstractFrame.FrameComponent
 
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.Frame
Frame.Mode, Frame.State
 
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.Frame
CLOSE_ACTION_CONTROL_PROPERTY, MENU_PROPERTY, MODAL_PROPERTY, MOVABLE_PROPERTY, OPEN_EFFECT_PROPERTY, RELATED_COMPONENT_PROPERTY, RESIZABLE_PROPERTY, STATE_PROPERTY, TITLE_BACKGROUND_COLOR_PROPERTY, TITLE_VISIBLE_PROPERTY, TOOLBAR_PROPERTY
 
Fields inherited from interface com.guiseframework.component.ContentComponent
CONTENT_PROPERTY
 
Fields inherited from interface com.guiseframework.component.ModalComponent
MODE_PROPERTY
 
Fields inherited from interface com.guiseframework.component.InputFocusGroupComponent
INPUT_FOCUS_STRATEGY_PROPERTY, INPUT_FOCUSED_COMPONENT_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
 
Constructor Summary
AbstractDialogFrame(ValueModel<V> valueModel, Component component)
          Value model, and component constructor.
 
Method Summary
 void clearValue()
          Clears the value by setting the value to null, which may be invalid according to any installed validators.
protected  Control.Status determineStatus()
          Checks the user input status of the control.
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()
           
 Control.Status getStatus()
           
 Validator<V> getValidator()
           
 V getValue()
           
 java.lang.Class<V> getValueClass()
           
protected  ValueModel<V> getValueModel()
           
 boolean isEnabled()
           
 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 setEnabled(boolean newEnabled)
          Sets whether the control is enabled and and can receive user input.
 void setNotification(Notification newNotification)
          Sets the component notification.
protected  void setStatus(Control.Status newStatus)
          Sets the status of the current user input.
 void setValidator(Validator<V> newValidator)
          Sets the validator.
 void setValue(V newValue)
          Sets the input value.
protected  void updateStatus()
          Rechecks user input status of this component, and updates the status.
protected  void updateValid()
          Rechecks user input validity of this component and all child components, and updates the valid state.
 boolean validate()
          Validates the user input 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.AbstractFrame
canClose, close, closeImpl, getCloseActionControl, getCloseActionPrototype, getContent, getInputFocusedComponent, getInputFocusStrategy, getMenu, getMode, getOpenEffect, getPrototypeProvisionStrategy, getRelatedComponent, getState, getTitleBackgroundColor, getToolbar, isModal, isMovable, isResizable, isTitleVisible, open, open, open, provideDefaultPrototypes, setCloseActionControl, setContent, setInputFocusedComponent, setInputFocusStrategy, setMenu, setModal, setMode, setMovable, setOpenEffect, setRelatedComponent, setResizable, setState, setTitleBackgroundColor, setTitleVisible, setToolbar, updateDefaultPrototypeProvisions
 
Methods inherited from class com.guiseframework.component.AbstractEnumCompositeComponent
getComponent, setComponent
 
Methods inherited from class com.guiseframework.component.AbstractArrayCompositeComponent
getChildComponents, getChildList, getComponent, hasChildComponents, setComponent
 
Methods inherited from class com.guiseframework.component.AbstractMultipleCompositeComponent
addComponent, removeComponent
 
Methods inherited from class com.guiseframework.component.AbstractCompositeComponent
addCompositeComponentListener, childComponentValidPropertyChanged, determineChildrenValid, dispatchInputEvent, dispatchInputEvent, fireChildComponentAdded, fireChildComponentAdded, fireChildComponentRemoved, fireChildComponentRemoved, initializeChildComponent, loadPreferences, removeCompositeComponentListener, resetTheme, savePreferences, uninitializeChildComponent, updateTheme, validateChildren
 
Methods inherited from class com.guiseframework.component.AbstractComponent
addCommandListener, addExportStrategy, addImportStrategy, addKeyListener, addMouseListener, addNotificationListener, addPreferenceProperty, applyTheme, applyTheme, depict, 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, notify, processEvent, removeCommandListener, removeExportStrategy, removeImportStrategy, removeKeyListener, removeMouseListener, removeNotificationListener, removePreferenceProperty, setConstraints, setDepicted, setDescription, setDescriptionContentType, setDragEnabled, setDropEnabled, setFlyoverEnabled, setFlyoverStrategy, setGlyphURI, setInfo, setInfoContentType, setInputStrategy, setLabel, setLabelContentType, setName, setOrientation, setParent, setThemeApplied, setValid, toString, update
 
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.Frame
canClose, close, getCloseActionControl, getCloseActionPrototype, getMenu, getOpenEffect, getRelatedComponent, getState, getTitleBackgroundColor, getToolbar, isModal, isMovable, isResizable, isTitleVisible, open, open, open, setCloseActionControl, setMenu, setModal, setMovable, setOpenEffect, setRelatedComponent, setResizable, setTitleBackgroundColor, setTitleVisible, setToolbar
 
Methods inherited from interface com.guiseframework.component.ContentComponent
getContent, setContent
 
Methods inherited from interface com.guiseframework.component.CompositeComponent
addCompositeComponentListener, getChildComponents, hasChildComponents, removeCompositeComponentListener
 
Methods inherited from interface com.guiseframework.component.ModalComponent
getMode, setMode
 
Methods inherited from interface com.guiseframework.component.InputFocusGroupComponent
getInputFocusedComponent, getInputFocusStrategy, setInputFocusedComponent, setInputFocusStrategy
 

Constructor Detail

AbstractDialogFrame

public AbstractDialogFrame(ValueModel<V> valueModel,
                           Component component)
Value model, and component constructor.

Parameters:
valueModel - The frame value model.
component - The single child component, or null if this frame should have no child component.
Throws:
java.lang.NullPointerException - if the given value model is null.
Method Detail

getValueModel

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

isEnabled

public boolean isEnabled()
Specified by:
isEnabled in interface Enableable
Returns:
Whether the control is enabled and can receive user input.

setEnabled

public void setEnabled(boolean newEnabled)
Sets whether the control is enabled and and can receive user input. This is a bound property of type Boolean.

Specified by:
setEnabled in interface Enableable
Parameters:
newEnabled - true if the control should indicate and accept user input.
See Also:
Enableable.ENABLED_PROPERTY

getStatus

public Control.Status getStatus()
Specified by:
getStatus in interface Control
Returns:
The status of the current user input, or null if there is no status to report.

setStatus

protected void setStatus(Control.Status newStatus)
Sets the status of the current user input. This is a bound property.

Parameters:
newStatus - The new status of the current user input, or null if there is no status to report.
See Also:
Control.STATUS_PROPERTY

updateStatus

protected void updateStatus()
Rechecks user input status of this component, and updates the status.

See Also:
setStatus(Control.Status)

determineStatus

protected Control.Status determineStatus()
Checks the user input status of the control. If the component has a notification of Notification.Severity#WARNING, the status is determined to be Status#WARNING. If the component has a notification of Notification.Severity#ERROR, the status is determined to be Status#ERROR. Otherwise, this version returns null.

Returns:
The current user input status of the control.

updateValid

protected void updateValid()
Rechecks user input validity of this component and all child components, and updates the valid state. This version also updates the status.

Overrides:
updateValid in class AbstractComponent
See Also:
AbstractComponent.setValid(boolean), updateStatus()

setNotification

public void setNotification(Notification newNotification)
Sets the component notification. This version updates the component status if the notification changes. This is a bound property.

Specified by:
setNotification in interface Component
Overrides:
setNotification in class AbstractComponent
Parameters:
newNotification - The notification for the component, or null if no notification is associated with this component.
See Also:
Component.NOTIFICATION_PROPERTY

reset

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

Specified by:
reset in interface Control
See Also:
setNotification(Notification), resetValue()

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 AbstractCompositeComponent
Returns:
true if the component and all children passes all validity tests, else false.

validate

public boolean validate()
Validates the user input 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 AbstractFrame
Returns:
The current state of AbstractComponent.isValid() as a convenience.

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.