|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.wicket.Component org.apache.wicket.MarkupContainer
public abstract class MarkupContainer
A MarkupContainer holds a map of child components.
Components may alter their referring tag, replace the tag's body or insert markup after the tag. But components cannot remove tags from the markup stream. This is an important guarantee because graphic designers may be setting attributes on component tags that affect visual presentation.
The type of markup held in a given container subclass can be determined by calling getMarkupType(). Markup is accessed via a MarkupStream object which allows a component to traverse ComponentTag and RawMarkup MarkupElements while rendering a response. Markup in the stream may be HTML or some other kind of markup, such as VXML, as determined by the specific container subclass.
A markup stream may be directly associated with a container via setMarkupStream. However, a container which does not have a markup stream (its getMarkupStream() returns null) may inherit a markup stream from a container above it in the component hierarchy. The findMarkupStream() method will locate the first container at or above this container which has a markup stream.
All Page containers set a markup stream before rendering by calling the method getAssociatedMarkupStream() to load the markup associated with the page. Since Page is at the top of the container hierarchy, it is guaranteed that findMarkupStream will always return a valid markup stream.
MarkupStream
,
Serialized FormField Summary |
---|
Fields inherited from class org.apache.wicket.Component |
---|
ENABLE, FLAG_INITIALIZED, FLAG_REMOVING_FROM_HIERARCHY, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED8, PARENT_PATH, PATH_SEPARATOR, RENDER |
Constructor Summary | |
---|---|
MarkupContainer(String id)
|
|
MarkupContainer(String id,
IModel<?> model)
|
Method Summary | ||
---|---|---|
MarkupContainer |
add(Component... childs)
Adds a child component to this container. |
|
MarkupContainer |
addOrReplace(Component... childs)
Replaces a child component of this container with another or just adds it in case no child with the same id existed yet. |
|
boolean |
autoAdd(Component component,
MarkupStream markupStream)
This method allows a component to be added by an auto-resolver such as AutoLinkResolver. |
|
boolean |
contains(Component component,
boolean recurse)
|
|
Component |
get(int index)
Returns child component at the specified index |
|
Component |
get(String path)
Get a child component by looking it up with the given path. |
|
Markup |
getAssociatedMarkup()
Gets a fresh markup stream that contains the (immutable) markup resource for this class. |
|
MarkupStream |
getAssociatedMarkupStream(boolean throwException)
Gets a fresh markup stream that contains the (immutable) markup resource for this class. |
|
IMarkupFragment |
getMarkup(Component child)
Get the childs markup |
|
MarkupType |
getMarkupType()
Get the type of associated markup for this component. |
|
boolean |
hasAssociatedMarkup()
Deprecated. Use #getAssociatedMarkup() != null instead |
|
void |
internalAdd(Component child)
THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. |
|
void |
internalInitialize()
THIS METHOD IS NOT PART OF THE PUBLIC API, DO NOT CALL IT Overrides Component.internalInitialize() to call Component.fireInitialize()
for itself and for all its children. |
|
Iterator<Component> |
iterator()
|
|
Iterator<Component> |
iterator(Comparator<Component> comparator)
|
|
protected void |
onAfterRenderChildren()
|
|
void |
onComponentTagBody(MarkupStream markupStream,
ComponentTag openTag)
Handle the container's body. |
|
protected void |
onMarkupAttached()
Can be subclassed by any user to implement init-like logic which requires the markup to be available |
|
protected void |
onRender()
Implementation that renders this component. |
|
MarkupContainer |
remove(Component component)
|
|
MarkupContainer |
remove(String id)
Removes the given component |
|
MarkupContainer |
removeAll()
Removes all children from this container. |
|
protected void |
renderAll(MarkupStream markupStream,
ComponentTag openTag)
Loop through the markup in this container |
|
void |
renderAssociatedMarkup(String openTagName,
String exceptionMessage)
Renders the entire associated markup for a container such as a Border or Panel. |
|
protected boolean |
renderNext(MarkupStream markupStream)
THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. |
|
MarkupContainer |
replace(Component child)
Replaces a child component of this container with another |
|
MarkupContainer |
setDefaultModel(IModel<?> model)
Sets the given model. |
|
int |
size()
Get the number of children in this container. |
|
void |
swap(int idx1,
int idx2)
Swaps position of children. |
|
String |
toString()
Gets the string representation of this component. |
|
String |
toString(boolean detailed)
|
|
ComponentHierarchyIterator |
visitChildren()
|
|
ComponentHierarchyIterator |
visitChildren(Class<?> clazz)
|
|
|
visitChildren(Class<?> clazz,
IVisitor<S,R> visitor)
Traverses all child components of the given class in this container, calling the visitor's visit method at each one. |
|
|
visitChildren(IVisitor<Component,R> visitor)
Traverses all child components in this container, calling the visitor's visit method at each one. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public MarkupContainer(String id)
Component.Component(String)
public MarkupContainer(String id, IModel<?> model)
Component.Component(String, IModel)
Method Detail |
---|
public MarkupContainer add(Component... childs)
childs
- The child(s)
IllegalArgumentException
- Thrown if a child with the same id is replaced by the add operation.public MarkupContainer addOrReplace(Component... childs)
childs
- The child(s) to be added or replaced
public final boolean autoAdd(Component component, MarkupStream markupStream)
The result of all this is that components added with autoAdd() are free from versioning and can add their own children without the usual exception that would normally be thrown when the component hierarchy is modified during rendering.
component
- The component to addmarkupStream
- Null, if the parent container is able to provide the markup. Else the markup
stream to be used to render the component.
public boolean contains(Component component, boolean recurse)
component
- The component to checkrecurse
- True if all descendents should be considered
public final Component get(String path)
get
in interface IRequestableComponent
get
in class Component
path
- Path to component
public MarkupStream getAssociatedMarkupStream(boolean throwException)
throwException
- If true, throw an exception, if markup could not be found
public Markup getAssociatedMarkup()
public IMarkupFragment getMarkup(Component child)
child
- The child component. If null, the container's markup will be returned. See Border,
Panel or Enclosure where getMarkup(null) != getMarkup().
Component.getMarkup()
public MarkupType getMarkupType()
public void internalAdd(Component child)
child
- The child
IllegalArgumentException
- Thrown if a child with the same id is replaced by the add operation.public Iterator<Component> iterator()
public final Iterator<Component> iterator(Comparator<Component> comparator)
comparator
- The comparator
public MarkupContainer remove(Component component)
component
- Component to remove from this container
this
for chainingpublic MarkupContainer remove(String id)
id
- The id of the component to remove
this
for chainingpublic MarkupContainer removeAll()
Note: implementation does not call remove(Component)
for each
component.
this
for method chainingpublic final void renderAssociatedMarkup(String openTagName, String exceptionMessage)
openTagName
- the tag to render the associated markup forexceptionMessage
- message that will be used for exceptionspublic MarkupContainer replace(Component child)
child
- The child
IllegalArgumentException
- Thrown if there was no child with the same id.public MarkupContainer setDefaultModel(IModel<?> model)
Component
WARNING: DO NOT OVERRIDE THIS METHOD UNLESS YOU HAVE A VERY GOOD REASON FOR IT. OVERRIDING THIS MIGHT OPEN UP SECURITY LEAKS AND BREAK BACK-BUTTON SUPPORT.
setDefaultModel
in class Component
model
- The model
Component.setDefaultModel(org.apache.wicket.model.IModel)
public int size()
public String toString()
Component
Component.toString()
public String toString(boolean detailed)
detailed
- True if a detailed string is desired
public final <S extends Component,R> R visitChildren(Class<?> clazz, IVisitor<S,R> visitor)
S
- The type that goes into the Visitor.component() method.R
- clazz
- The class of child to visit, or null to visit all childrenvisitor
- The visitor to call back to
public final <R> R visitChildren(IVisitor<Component,R> visitor)
R
- visitor
- The visitor to call back to
public final ComponentHierarchyIterator visitChildren()
public final ComponentHierarchyIterator visitChildren(Class<?> clazz)
clazz
- Filter condition
public final void internalInitialize()
Component.internalInitialize()
to call Component.fireInitialize()
for itself and for all its children.
internalInitialize
in class Component
Component.fireInitialize()
public final Component get(int index)
index
-
ArrayIndexOutOfBoundsException
protected final boolean renderNext(MarkupStream markupStream)
markupStream
- The markup stream
public void onComponentTagBody(MarkupStream markupStream, ComponentTag openTag)
onComponentTagBody
in class Component
markupStream
- The markup streamopenTag
- The open tag for the bodyprotected void onRender()
Component
Component.onRender()
protected final void renderAll(MarkupStream markupStream, ComponentTag openTag)
markupStream
- openTag
- protected void onAfterRenderChildren()
onAfterRenderChildren
in class Component
@Deprecated public boolean hasAssociatedMarkup()
public final void swap(int idx1, int idx2)
idx1
- index of first component to be swappedidx2
- index of second component to be swappedprotected void onMarkupAttached()
Component
onMarkupAttached
in class Component
Component.onMarkupAttached()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |