Package io.guise.framework.component
Class AbstractEditComponentTextControl<EC extends Component>
java.lang.Object
com.globalmentor.beans.BoundPropertyObject
io.guise.framework.event.GuiseBoundPropertyObject
io.guise.framework.model.ui.AbstractPresentationModel
io.guise.framework.component.AbstractComponent
io.guise.framework.component.AbstractCompositeComponent
io.guise.framework.component.AbstractMultipleCompositeComponent
io.guise.framework.component.AbstractListCompositeComponent
io.guise.framework.component.AbstractLayoutComponent
io.guise.framework.component.AbstractContainer
io.guise.framework.component.AbstractContainerControl
io.guise.framework.component.AbstractEditComponentTextControl<EC>
- Type Parameters:
EC
- The type of component being edited.
- All Implemented Interfaces:
com.globalmentor.beans.PropertyBindable
,com.globalmentor.beans.PropertyConstrainable
,io.clogr.Clogged
,Component
,CompositeComponent
,Container
,ContainerControl
,Control
,EditComponent
,InputFocusableComponent
,LayoutComponent
,ModalComponent<AbstractEditComponentTextControl.Mode>
,EditListenable
,Displayable
,Enableable
,InfoModel
,LabelModel
,Model
,PresentationModel
,DepictedObject
,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
Modifier and TypeClassDescriptionstatic enum
The mode of this component; whether the component is being edited.Nested classes/interfaces inherited from class io.guise.framework.component.AbstractComponent
AbstractComponent.AbstractFlyoverFrameStrategy<S extends Component>, AbstractComponent.AbstractFlyoverStrategy<S extends Component>, AbstractComponent.DefaultFlyoverStrategy<S extends Component>
Nested classes/interfaces inherited from interface io.guise.framework.component.Component
Component.FlyoverStrategy<S extends Component>
Nested classes/interfaces inherited from interface io.guise.framework.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 io.guise.framework.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 io.guise.framework.component.Control
STATUS_PROPERTY
Fields inherited from interface io.guise.framework.model.Displayable
DISPLAYED_PROPERTY
Fields inherited from interface io.guise.framework.component.EditComponent
EDITABLE_PROPERTY
Fields inherited from interface io.guise.framework.model.Enableable
ENABLED_PROPERTY
Fields inherited from interface io.guise.framework.model.InfoModel
DESCRIPTION_CONTENT_TYPE_PROPERTY, DESCRIPTION_PROPERTY, INFO_CONTENT_TYPE_PROPERTY, INFO_PROPERTY
Fields inherited from interface io.guise.framework.model.LabelModel
GLYPH_URI_PROPERTY, LABEL_CONTENT_TYPE_PROPERTY, LABEL_PROPERTY
Fields inherited from interface io.guise.framework.component.LayoutComponent
LAYOUT_PROPERTY, LAYOUT_THEME_APPLIED_PROPERTY
Fields inherited from interface io.guise.framework.component.ModalComponent
MODE_PROPERTY
Fields inherited from interface io.guise.framework.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
-
Constructor Summary
ConstructorDescriptionAbstractEditComponentTextControl
(EC editedComponent, String editedProperty, ValueControl<String> editControl, Flow flow) Edited component, value control, and flow constructor. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Accepts edits.protected void
acceptEdit
(String text) Accepts edits with the given text.void
addEditListener
(EditListener editListener) Adds an edit listener.void
Removes the current label by setting it tonull
.void
Initiates editing.protected void
Fires an edit event to all registered edit listeners.protected void
fireEdited
(EditEvent editEvent) Fires a given edit event to all registered edit listeners.getMode()
protected abstract String
Retrieves the text from the edited component.boolean
void
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
Sets the mode of interaction.protected abstract void
Updates the text of the edited component.protected void
update()
Updates the condition of the component based upon the state.Methods inherited from class io.guise.framework.component.AbstractContainerControl
determineStatus, getEnableable, getStatus, isEnabled, reset, setEnabled, setNotification, setStatus, updateStatus, updateValid
Methods inherited from class io.guise.framework.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 io.guise.framework.component.AbstractLayoutComponent
addComponent, applyTheme, applyTheme, getLayout, isLayoutThemeApplied, removeComponent, resetTheme, setLayoutThemeApplied, updateTheme
Methods inherited from class io.guise.framework.component.AbstractListCompositeComponent
addComponent, getComponentList, hasChildComponents
Methods inherited from class io.guise.framework.component.AbstractCompositeComponent
addCompositeComponentListener, childComponentValidPropertyChanged, determineChildrenValid, determineValid, dispatchInputEvent, dispatchInputEvent, fireChildComponentAdded, fireChildComponentAdded, fireChildComponentRemoved, fireChildComponentRemoved, initializeChildComponent, loadPreferences, removeCompositeComponentListener, savePreferences, uninitializeChildComponent, validate, validateChildren
Methods inherited from class io.guise.framework.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 io.guise.framework.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 io.guise.framework.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 io.clogr.Clogged
getLogger
Methods inherited from interface io.guise.framework.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 io.guise.framework.component.CompositeComponent
addCompositeComponentListener, getChildComponents, hasChildComponents, removeCompositeComponentListener
Methods inherited from interface io.guise.framework.component.Container
add, add, add, add, add, add, add, clear, contains, get, indexOf, isEmpty, lastIndexOf, remove, remove, setLayout, size
Methods inherited from interface io.guise.framework.platform.DepictedObject
depict, getDepictID, getSession, processEvent
Methods inherited from interface io.guise.framework.model.InfoModel
getDescription, getDescriptionContentType, getInfo, getInfoContentType, setDescription, setDescriptionContentType, setInfo, setInfoContentType
Methods inherited from interface java.lang.Iterable
forEach, iterator, spliterator
Methods inherited from interface io.guise.framework.model.LabelModel
getGlyphURI, getLabel, getLabelContentType, setGlyphURI, setLabel, setLabelContentType
Methods inherited from interface io.guise.framework.component.LayoutComponent
getLayout, isLayoutThemeApplied, setLayoutThemeApplied
Methods inherited from interface io.guise.framework.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.globalmentor.beans.PropertyBindable
addPropertyChangeListener, addPropertyChangeListener, getPropertyChangeListeners, getPropertyChangeListeners, hasPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListener
Methods inherited from interface com.globalmentor.beans.PropertyConstrainable
addVetoableChangeListener, addVetoableChangeListener, getVetoableChangeListeners, getVetoableChangeListeners, hasVetoableChangeListeners, removeVetoableChangeListener, removeVetoableChangeListener
-
Constructor Details
-
AbstractEditComponentTextControl
public AbstractEditComponentTextControl(EC editedComponent, String editedProperty, ValueControl<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:
NullPointerException
- if the edited component, value control, text property, and/or flow axis isnull
.
-
-
Method Details
-
isEditable
public boolean isEditable()- Specified by:
isEditable
in interfaceEditComponent
- Returns:
- Whether the value is editable and the component will allow the the user to change the value.
-
setEditable
public void setEditable(boolean newEditable) Description copied from interface:EditComponent
Sets whether the value is editable and the component will allow the the user to change the value. This is a bound property of typeBoolean
.- Specified by:
setEditable
in interfaceEditComponent
- Parameters:
newEditable
-true
if the component should allow the user to change the value.- See Also:
-
getMode
- Specified by:
getMode
in interfaceModalComponent<EC extends Component>
- Returns:
- The current mode of interaction, or
null
if the component is in a modeless state.
-
setMode
Description copied from interface:ModalComponent
Sets the mode of interaction. This is a bound property.- Specified by:
setMode
in interfaceModalComponent<EC extends Component>
- Parameters:
newMode
- The new mode of component interaction.- See Also:
-
getEditedComponent
- Returns:
- The component the text of which is to be edited.
-
getEditControl
- Returns:
- The control used to edit the text.
-
getEditActionPrototype
- Returns:
- The action prototype for editing the text.
-
getAcceptActionPrototype
- Returns:
- The action prototype for accepting edits.
-
getRejectActionPrototype
- Returns:
- The action prototype for rejecting edits.
-
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 toacceptEdit(String)
.- See Also:
-
acceptEdit
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:
-
rejectEdit
public void rejectEdit()Cancels edits. -
deleteLabel
public void deleteLabel()Removes the current label by setting it tonull
. -
update
protected void update()Description copied from class:AbstractComponent
Updates the condition of the component based upon the state. This method is a convenience method for complex components that would like to perform wholesale updates any prototypes, enabled/disabled status, proxied actions, etc. This version does nothing.- Overrides:
update
in classAbstractComponent
-
getText
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
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
Description copied from interface:EditListenable
Adds an edit listener.- Specified by:
addEditListener
in interfaceEditListenable
- Parameters:
editListener
- The edit listener to add.
-
removeEditListener
Description copied from interface:EditListenable
Removes an edit listener.- Specified by:
removeEditListener
in interfaceEditListenable
- Parameters:
editListener
- The edit listener to remove.
-
fireEdited
protected void fireEdited()Fires an edit event to all registered edit listeners. This method delegates tofireEdited(EditEvent)
.- See Also:
-
fireEdited
Fires a given edit event to all registered edit listeners.- Parameters:
editEvent
- The edit event to fire.
-