Package io.guise.framework.component
Class AbstractContainer
- java.lang.Object
-
- com.globalmentor.beans.BoundPropertyObject
-
- All Implemented Interfaces:
com.globalmentor.beans.PropertyBindable
,com.globalmentor.beans.PropertyConstrainable
,Component
,CompositeComponent
,Container
,LayoutComponent
,Displayable
,InfoModel
,LabelModel
,Model
,PresentationModel
,DepictedObject
,java.lang.Iterable<Component>
- Direct Known Subclasses:
AbstractBox
,AbstractContainerControl
,AbstractPanel
,GroupPanel
,SpinnerControl
,TextBox
public abstract class AbstractContainer extends AbstractLayoutComponent implements Container
Abstract implementation of a container component. Iterating over child components is thread safe.- Author:
- Garret Wilson
-
-
Nested Class Summary
-
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>
-
-
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.model.Displayable
DISPLAYED_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.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
Constructors Constructor Description AbstractContainer(Layout<? extends Constraints> layout)
Layout constructor with a default info model.AbstractContainer(InfoModel infoModel, Layout<? extends Constraints> layout)
Info model and layout constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(int index, Component component)
Adds a child component with default constraints to the container at the specified index.void
add(int index, Component component, Constraints constraints)
Adds a component along with constraints to the container at the specified index.Component
add(int index, Prototype prototype)
Adds a component based upon the given prototype to the container with default constraints at the specified index.Component
add(int index, Prototype prototype, Constraints constraints)
Adds a component based upon the given prototype to the container along with constraints at the specified index.boolean
add(Component component)
Adds a component with default constraints to the container.boolean
add(Component component, Constraints constraints)
Adds a component along with constraints to the container.Component
add(Prototype prototype)
Adds a component based upon the given prototype to the container with default constraints.Component
add(Prototype prototype, Constraints constraints)
Adds a component based upon the given prototype to the container along with constraints.void
clear()
Removes all of the components from this container.boolean
contains(java.lang.Object component)
Determines whether this component contains the given component.Component
createComponent(Prototype prototype)
Creates a component appropriate for the context of this component from the given prototype.Component
get(int index)
Returns the component at the specified index in the component.java.util.List<Component>
getChildComponents()
int
indexOf(java.lang.Object component)
Returns the index in the component of the first occurrence of the specified component.boolean
isEmpty()
java.util.Iterator<Component>
iterator()
int
lastIndexOf(java.lang.Object component)
Returns the index in this component of the last occurrence of the specified component.Component
remove(int index)
Removes the child component at the specified position in this container.boolean
remove(java.lang.Object componentObject)
Removes a component from the container.void
setChildren(java.util.List<Component> children)
Sets the children in this container.<T extends Constraints>
voidsetLayout(Layout<T> newLayout)
Sets the layout definition for the component.int
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, setNotification, setOrientation, setParent, setThemeApplied, setValid, toString, update, updateValid
-
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.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, hasChildComponents, removeCompositeComponentListener
-
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 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
-
-
-
-
Constructor Detail
-
AbstractContainer
public AbstractContainer(Layout<? extends Constraints> layout)
Layout constructor with a default info model.- Parameters:
layout
- The layout definition for the container.- Throws:
java.lang.NullPointerException
- if the given layout isnull
.
-
AbstractContainer
public AbstractContainer(InfoModel infoModel, Layout<? extends Constraints> layout)
Info model and layout constructor.- Parameters:
infoModel
- The component info model.layout
- The layout definition for the container.- Throws:
java.lang.NullPointerException
- if the given info model and/or layout isnull
.
-
-
Method Detail
-
size
public int size()
- Specified by:
size
in interfaceContainer
- Overrides:
size
in classAbstractListCompositeComponent
- Returns:
- The number of child components in this component.
-
isEmpty
public boolean isEmpty()
- Specified by:
isEmpty
in interfaceContainer
- Overrides:
isEmpty
in classAbstractListCompositeComponent
- Returns:
- Whether this component contains no child components.
-
contains
public boolean contains(java.lang.Object component)
Description copied from class:AbstractListCompositeComponent
Determines whether this component contains the given component.- Specified by:
contains
in interfaceContainer
- Overrides:
contains
in classAbstractListCompositeComponent
- Parameters:
component
- The component to check.- Returns:
true
if this component contains the given component.
-
indexOf
public int indexOf(java.lang.Object component)
Description copied from class:AbstractListCompositeComponent
Returns the index in the component of the first occurrence of the specified component.- Specified by:
indexOf
in interfaceContainer
- Overrides:
indexOf
in classAbstractListCompositeComponent
- Parameters:
component
- The component the index of which should be returned.- Returns:
- The index in this component of the first occurrence of the specified component, or -1 if this component does not contain the given component.
-
lastIndexOf
public int lastIndexOf(java.lang.Object component)
Description copied from class:AbstractListCompositeComponent
Returns the index in this component of the last occurrence of the specified component.- Specified by:
lastIndexOf
in interfaceContainer
- Overrides:
lastIndexOf
in classAbstractListCompositeComponent
- Parameters:
component
- The component the last index of which should be returned.- Returns:
- The index in this component of the last occurrence of the specified component, or -1 if this component does not contain the given component.
-
get
public Component get(int index)
Description copied from class:AbstractListCompositeComponent
Returns the component at the specified index in the component.- Specified by:
get
in interfaceContainer
- Overrides:
get
in classAbstractListCompositeComponent
- Parameters:
index
- The index of the component to return.- Returns:
- The component at the specified position in this component.
-
add
public void add(int index, Component component)
Adds a child component with default constraints to the container at the specified index.- Parameters:
index
- The index at which the component should be added.component
- The component to add to this container.- Throws:
java.lang.IllegalArgumentException
- if the component already has a parent.java.lang.IllegalStateException
- if the installed layout does not support default constraints.java.lang.IndexOutOfBoundsException
- if the index is less than zero or greater than the number of child components.
-
add
public boolean add(Component component)
Description copied from interface:Container
Adds a component with default constraints to the container.
-
add
public void add(int index, Component component, Constraints constraints)
Description copied from interface:Container
Adds a component along with constraints to the container at the specified index. This is a convenience method that first sets the constraints of the component.
-
add
public boolean add(Component component, Constraints constraints)
Description copied from interface:Container
Adds a component along with constraints to the container. This is a convenience method that first sets the constraints of the component.
-
add
public Component add(int index, Prototype prototype)
Adds a component based upon the given prototype to the container with default constraints at the specified index.This implementation delegates to
add(int, Component)
.- Specified by:
add
in interfaceContainer
- Parameters:
index
- The index at which the component should be added.prototype
- The prototype of the component to add.- Returns:
- The component created to represent the given prototype.
- See Also:
createComponent(Prototype)
-
add
public Component add(Prototype prototype)
Adds a component based upon the given prototype to the container with default constraints.This implementation delegates to
add(Component)
.- Specified by:
add
in interfaceContainer
- Parameters:
prototype
- The prototype of the component to add.- Returns:
- The component created to represent the given prototype.
- See Also:
createComponent(Prototype)
-
add
public Component add(int index, Prototype prototype, Constraints constraints)
Adds a component based upon the given prototype to the container along with constraints at the specified index.This implementation delegates to
add(int, Component, Constraints)
.- Specified by:
add
in interfaceContainer
- Parameters:
index
- The index at which the component should be added.prototype
- The prototype of the component to add.constraints
- The constraints for the layout, ornull
if default constraints should be used.- Returns:
- The component created to represent the given prototype.
- See Also:
createComponent(Prototype)
-
add
public Component add(Prototype prototype, Constraints constraints)
Adds a component based upon the given prototype to the container along with constraints.This implementation delegates to
add(Component, Constraints)
.
-
createComponent
public Component createComponent(Prototype prototype)
Creates a component appropriate for the context of this component from the given prototype. This version creates the following components, in order of priority:ActionPrototype
Button
LabelPrototype
Label
MenuPrototype
DropMenu
TogglePrototype
BooleanSelectButton
ValuePrototype
<Boolean
>CheckControl
ValuePrototype
<Number
> with installedRangeValidator
SliderControl
ValuePrototype
<?>TextControl
- Parameters:
prototype
- The prototype of the component to create.- Returns:
- A new component based upon the given prototype.
- Throws:
java.lang.IllegalArgumentException
- if no component can be created from the given prototype
-
remove
public boolean remove(java.lang.Object componentObject)
Description copied from interface:Container
Removes a component from the container.
-
remove
public Component remove(int index)
Description copied from interface:Container
Removes the child component at the specified position in this container.
-
clear
public void clear()
Description copied from interface:Container
Removes all of the components from this container.
-
iterator
public java.util.Iterator<Component> iterator()
- Specified by:
iterator
in interfacejava.lang.Iterable<Component>
-
getChildComponents
public java.util.List<Component> getChildComponents()
- Specified by:
getChildComponents
in interfaceCompositeComponent
- Overrides:
getChildComponents
in classAbstractListCompositeComponent
- Returns:
- An iterable to child components.
-
setChildren
public void setChildren(java.util.List<Component> children)
Sets the children in this container. This method along withgetChildComponents()
provides achildren
property for alternate children access.- Parameters:
children
- The new children for this container in order.- See Also:
clear()
,add(Component)
-
setLayout
public <T extends Constraints> void setLayout(Layout<T> newLayout)
Description copied from class:AbstractLayoutComponent
Sets the layout definition for the component. This is a bound property. The layout is marked as not yet having a theme applied, as the specific theme rules applied to the layout may depend on the layout's owner.- Specified by:
setLayout
in interfaceContainer
- Overrides:
setLayout
in classAbstractLayoutComponent
- Type Parameters:
T
- The type of the constraints.- Parameters:
newLayout
- The new layout definition for the container.- See Also:
LayoutComponent.LAYOUT_PROPERTY
-
-