com.guiseframework.component
Class AbstractEditComponentTextControl<EC extends Component>

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.AbstractListCompositeComponent
                              extended by com.guiseframework.component.AbstractLayoutComponent
                                  extended by com.guiseframework.component.AbstractContainer
                                      extended by com.guiseframework.component.AbstractContainerControl
                                          extended by com.guiseframework.component.AbstractEditComponentTextControl<EC>
Type Parameters:
EC - The type of component being edited.
All Implemented Interfaces:
com.globalmentor.beans.PropertyBindable, com.globalmentor.beans.PropertyConstrainable, Component, CompositeComponent, Container, ContainerControl, Control, EditComponent, InputFocusableComponent, LayoutComponent, ModalComponent<AbstractEditComponentTextControl.Mode>, EditListenable, Displayable, Enableable, InfoModel, LabelModel, Model, PresentationModel, DepictedObject, java.lang.Iterable<Component>
Direct Known Subclasses:
EditComponentLabelControl, EditComponentTextControl

public abstract class AbstractEditComponentTextControl<EC extends Component>
extends AbstractContainerControl
implements ModalComponent<AbstractEditComponentTextControl.Mode>, EditComponent

Control that allows some component text property to be edited in-place. Editing can be started by calling setMode(AbstractEditComponentTextControl.Mode) with AbstractEditComponentTextControl.Mode.EDIT.

This class binds a single left mouse click input to getEditActionPrototype(), the command ProcessCommand.CONTINUE to getAcceptActionPrototype(), and the command ProcessCommand.ABORT to getRejectActionPrototype().

Author:
Garret Wilson

Nested Class Summary
static class AbstractEditComponentTextControl.Mode
          The mode of this component; whether the component is being edited.
 
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.Component
Component.FlyoverStrategy<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.ModalComponent
MODE_PROPERTY
 
Fields inherited from interface com.guiseframework.component.EditComponent
EDITABLE_PROPERTY
 
Fields inherited from interface com.guiseframework.component.Component
BOOKMARK_ENABLED_PROPERTY, CONSTRAINTS_PROPERTY, DRAG_ENABLED_PROPERTY, DROP_ENABLED_PROPERTY, FLYOVER_ENABLED_PROPERTY, FLYOVER_STRATEGY_PROPERTY, INPUT_STRATEGY_PROPERTY, NAME_PROPERTY, NOTIFICATION_PROPERTY, ORIENTATION_PROPERTY, THEME_APPLIED_PROPERTY, VALID_PROPERTY
 
Fields inherited from interface com.guiseframework.model.ui.PresentationModel
BACKGROUND_COLOR_PROPERTY, BORDER_LINE_FAR_COLOR_PROPERTY, BORDER_LINE_FAR_EXTENT_PROPERTY, BORDER_LINE_FAR_STYLE_PROPERTY, BORDER_LINE_NEAR_COLOR_PROPERTY, BORDER_LINE_NEAR_EXTENT_PROPERTY, BORDER_LINE_NEAR_STYLE_PROPERTY, BORDER_PAGE_FAR_COLOR_PROPERTY, BORDER_PAGE_FAR_EXTENT_PROPERTY, BORDER_PAGE_FAR_STYLE_PROPERTY, BORDER_PAGE_NEAR_COLOR_PROPERTY, BORDER_PAGE_NEAR_EXTENT_PROPERTY, BORDER_PAGE_NEAR_STYLE_PROPERTY, CORNER_LINE_FAR_PAGE_FAR_ARC_SIZE_PROPERTY, CORNER_LINE_FAR_PAGE_NEAR_ARC_SIZE_PROPERTY, CORNER_LINE_NEAR_PAGE_FAR_ARC_SIZE_PROPERTY, CORNER_LINE_NEAR_PAGE_NEAR_ARC_SIZE_PROPERTY, CURSOR_PROPERTY, FONT_FAMILIES_PROPERTY, FONT_SIZE_PROPERTY, FONT_STYLE_PROPERTY, FONT_WEIGHT_BOLD, FONT_WEIGHT_NORMAL, FONT_WEIGHT_PROPERTY, LABEL_FONT_FAMILIES_PROPERTY, LABEL_FONT_SIZE_PROPERTY, LABEL_FONT_STYLE_PROPERTY, LABEL_FONT_WEIGHT_PROPERTY, LABEL_TEXT_COLOR_PROPERTY, LINE_EXTENT_PROPERTY, MARGIN_LINE_FAR_EXTENT_PROPERTY, MARGIN_LINE_NEAR_EXTENT_PROPERTY, MARGIN_PAGE_FAR_EXTENT_PROPERTY, MARGIN_PAGE_NEAR_EXTENT_PROPERTY, OPACITY_PROPERTY, PADDING_LINE_FAR_EXTENT_PROPERTY, PADDING_LINE_NEAR_EXTENT_PROPERTY, PADDING_PAGE_FAR_EXTENT_PROPERTY, PADDING_PAGE_NEAR_EXTENT_PROPERTY, PAGE_EXTENT_PROPERTY, ROUNDED_CORNER_ARC_SIZE, STYLE_ID_PROPERTY, TEXT_COLOR_PROPERTY, TOOLTIP_ENABLED_PROPERTY, VISIBLE_PROPERTY
 
Fields inherited from interface com.guiseframework.model.Displayable
DISPLAYED_PROPERTY
 
Fields inherited from interface com.guiseframework.model.InfoModel
DESCRIPTION_CONTENT_TYPE_PROPERTY, DESCRIPTION_PROPERTY, INFO_CONTENT_TYPE_PROPERTY, INFO_PROPERTY
 
Fields inherited from interface com.guiseframework.model.LabelModel
GLYPH_URI_PROPERTY, LABEL_CONTENT_TYPE_PROPERTY, LABEL_PROPERTY
 
Fields inherited from interface com.guiseframework.component.LayoutComponent
LAYOUT_PROPERTY, LAYOUT_THEME_APPLIED_PROPERTY
 
Fields inherited from interface com.guiseframework.component.Control
STATUS_PROPERTY
 
Fields inherited from interface com.guiseframework.model.Enableable
ENABLED_PROPERTY
 
Constructor Summary
AbstractEditComponentTextControl(EC editedComponent, java.lang.String editedProperty, ValueControl<java.lang.String> editControl, Flow flow)
          Edited component, value control, and flow constructor.
 
Method Summary
 void acceptEdit()
          Accepts edits.
protected  void acceptEdit(java.lang.String text)
          Accepts edits with the given text.
 void addEditListener(EditListener editListener)
          Adds an edit listener.
 void deleteLabel()
          Removes the current label by setting it to null.
 void editLabel()
          Initiates editing.
protected  void fireEdited()
          Fires an edit event to all registered edit listeners.
protected  void fireEdited(EditEvent editEvent)
          Fires a given edit event to all registered edit listeners.
 ActionPrototype getAcceptActionPrototype()
           
 ActionPrototype getDeleteActionPrototype()
           
 ActionPrototype getEditActionPrototype()
           
 ValueControl<java.lang.String> getEditControl()
          The control used to edit the text.
 EC getEditedComponent()
          The component the text of which is to be edited.
 AbstractEditComponentTextControl.Mode getMode()
           
 ActionPrototype getRejectActionPrototype()
           
protected abstract  java.lang.String getText(EC editedComponent)
          Retrieves the text from the edited component.
 boolean isEditable()
           
 void rejectEdit()
          Cancels edits.
 void removeEditListener(EditListener editListener)
          Removes an edit listener.
 void setEditable(boolean newEditable)
          Sets whether the value is editable and the component will allow the the user to change the value.
 void setMode(AbstractEditComponentTextControl.Mode newMode)
          Sets the mode of interaction.
protected abstract  void setText(EC editedComponent, java.lang.String newText)
          Updates the text of the edited component.
protected  void update()
          Update the states of the components and prototypes based upon the current state of the component.
 
Methods inherited from class com.guiseframework.component.AbstractContainerControl
determineStatus, getEnableable, getStatus, isEnabled, reset, setEnabled, setNotification, setStatus, updateStatus, updateValid
 
Methods inherited from class com.guiseframework.component.AbstractContainer
add, add, add, add, add, add, add, add, clear, contains, createComponent, get, getChildComponents, indexOf, isEmpty, iterator, lastIndexOf, remove, remove, setChildren, setLayout, size
 
Methods inherited from class com.guiseframework.component.AbstractLayoutComponent
addComponent, applyTheme, applyTheme, getLayout, isLayoutThemeApplied, removeComponent, resetTheme, setLayoutThemeApplied, updateTheme
 
Methods inherited from class com.guiseframework.component.AbstractListCompositeComponent
addComponent, getComponentList, hasChildComponents
 
Methods inherited from class com.guiseframework.component.AbstractCompositeComponent
addCompositeComponentListener, childComponentValidPropertyChanged, determineChildrenValid, determineValid, dispatchInputEvent, dispatchInputEvent, fireChildComponentAdded, fireChildComponentAdded, fireChildComponentRemoved, fireChildComponentRemoved, initializeChildComponent, loadPreferences, removeCompositeComponentListener, savePreferences, uninitializeChildComponent, validate, validateChildren
 
Methods inherited from class com.guiseframework.component.AbstractComponent
addCommandListener, addExportStrategy, addImportStrategy, addKeyListener, addMouseListener, addNotificationListener, addPreferenceProperty, 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
 
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, 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.Component
addCommandListener, addExportStrategy, addImportStrategy, addKeyListener, addMouseListener, addNotificationListener, addPreferenceProperty, applyTheme, applyTheme, dispatchInputEvent, exportTransfer, fireInputEvent, getAncestor, getComponentOrientation, getConstraints, getDepictor, getFlyoverStrategy, getInputStrategy, getName, getNotification, getOrientation, getParent, getPreferenceProperties, getTheme, hasCommandListeners, hasKeyListeners, hasMouseListeners, importTransfer, initialize, isDragEnabled, isDropEnabled, isFlyoverEnabled, isPreferenceProperty, isThemeApplied, isValid, loadPreferences, notify, removeCommandListener, removeExportStrategy, removeImportStrategy, removeKeyListener, removeMouseListener, removeNotificationListener, removePreferenceProperty, resetTheme, savePreferences, setConstraints, setDragEnabled, setDropEnabled, setFlyoverEnabled, setFlyoverStrategy, setInputStrategy, setName, setNotification, setOrientation, setParent, setThemeApplied, updateTheme, validate
 
Methods inherited from interface com.guiseframework.platform.DepictedObject
depict, getDepictID, getSession, processEvent
 
Methods inherited from interface com.guiseframework.model.ui.PresentationModel
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, getSession, 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 interface com.guiseframework.model.InfoModel
getDescription, getDescriptionContentType, getInfo, getInfoContentType, setDescription, setDescriptionContentType, setInfo, setInfoContentType
 
Methods inherited from interface com.guiseframework.model.LabelModel
getGlyphURI, getLabel, getLabelContentType, setGlyphURI, setLabel, setLabelContentType
 
Methods inherited from interface com.guiseframework.component.Container
add, add, add, add, add, add, add, clear, contains, get, indexOf, isEmpty, lastIndexOf, remove, remove, setLayout, size
 
Methods inherited from interface com.guiseframework.component.LayoutComponent
getLayout, isLayoutThemeApplied, setLayoutThemeApplied
 
Methods inherited from interface com.guiseframework.component.CompositeComponent
addCompositeComponentListener, getChildComponents, hasChildComponents, removeCompositeComponentListener
 
Methods inherited from interface java.lang.Iterable
iterator
 

Constructor Detail

AbstractEditComponentTextControl

public AbstractEditComponentTextControl(EC editedComponent,
                                        java.lang.String editedProperty,
                                        ValueControl<java.lang.String> editControl,
                                        Flow flow)
Edited component, value control, and flow constructor.

Parameters:
editedComponent - The component the text of which is to be edited.
editedProperty - The component property that will be affected when the text changes.
editControl - The control used to edit the text.
flow - The logical axis (line or page) along which information is flowed.
Throws:
java.lang.NullPointerException - if the edited component, value control, text property, and/or flow axis is null.
Method Detail

isEditable

public boolean isEditable()
Specified by:
isEditable in interface EditComponent
Returns:
Whether the value is editable and the component will allow the the user to change the value.

setEditable

public void setEditable(boolean newEditable)
Sets whether the value is editable and the component will allow the the user to change the value. This is a bound property of type Boolean.

Specified by:
setEditable in interface EditComponent
Parameters:
newEditable - true if the component should allow the user to change the value.
See Also:
EditComponent.EDITABLE_PROPERTY

getMode

public AbstractEditComponentTextControl.Mode getMode()
Specified by:
getMode in interface ModalComponent<AbstractEditComponentTextControl.Mode>
Returns:
The current mode of interaction, or null if the component is in a modeless state.

setMode

public void setMode(AbstractEditComponentTextControl.Mode newMode)
Sets the mode of interaction. This is a bound property. Changing the mode to AbstractEditComponentTextControl.Mode.EDIT initiates the editing process; changing the mode from AbstractEditComponentTextControl.Mode.EDIT clears the value from the edit control. If the mode changes, this method will call update().

Specified by:
setMode in interface ModalComponent<AbstractEditComponentTextControl.Mode>
Parameters:
newMode - The new mode of component interaction.
Throws:
java.lang.IllegalStateException - If editing is initiated and the current text of the component cannot be edited in the edit control.
See Also:
ModalComponent.MODE_PROPERTY

getEditedComponent

public EC getEditedComponent()
The component the text of which is to be edited.


getEditControl

public ValueControl<java.lang.String> getEditControl()
The control used to edit the text.


getEditActionPrototype

public ActionPrototype getEditActionPrototype()
Returns:
The action prototype for editing the text.

getAcceptActionPrototype

public ActionPrototype getAcceptActionPrototype()
Returns:
The action prototype for accepting edits.

getRejectActionPrototype

public ActionPrototype getRejectActionPrototype()
Returns:
The action prototype for rejecting edits.

getDeleteActionPrototype

public ActionPrototype getDeleteActionPrototype()
Returns:
The action prototype for deleting the text.

editLabel

public void editLabel()
Initiates editing.


acceptEdit

public void acceptEdit()
Accepts edits. If the component is not in edit mode, no action occurs. This implementation defers to acceptEdit(String).

See Also:
getMode()

acceptEdit

protected void acceptEdit(java.lang.String text)
Accepts edits with the given text. If the component is not in edit mode, no action occurs. This implementation sets the edit component text to the given text and fires and edited event.

Parameters:
text - The edited text to accept.
See Also:
getMode(), setText(Component, String)

rejectEdit

public void rejectEdit()
Cancels edits.


deleteLabel

public void deleteLabel()
Removes the current label by setting it to null.


update

protected void update()
Update the states of the components and prototypes based upon the current state of the component.

Overrides:
update in class AbstractComponent

getText

protected abstract java.lang.String getText(EC editedComponent)
Retrieves the text from the edited component.

Parameters:
editedComponent - The component the text of which is to be edited.
Returns:
The current text of the edited component

setText

protected abstract void setText(EC editedComponent,
                                java.lang.String newText)
Updates the text of the edited component.

Parameters:
editedComponent - The component the text of which is to be edited.
newText - The new text to set in the edited component.

addEditListener

public void addEditListener(EditListener editListener)
Adds an edit listener.

Specified by:
addEditListener in interface EditListenable
Parameters:
editListener - The edit listener to add.

removeEditListener

public void removeEditListener(EditListener editListener)
Removes an edit listener.

Specified by:
removeEditListener in interface EditListenable
Parameters:
editListener - The edit listener to remove.

fireEdited

protected void fireEdited()
Fires an edit event to all registered edit listeners. This method delegates to fireEdited(EditEvent).

See Also:
EditListener, EditEvent

fireEdited

protected void fireEdited(EditEvent editEvent)
Fires a given edit event to all registered edit listeners.

Parameters:
editEvent - The edit event to fire.


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