Module org.praxislive.code
Package org.praxislive.code
Class CodeContainer<D extends CodeContainerDelegate>
java.lang.Object
org.praxislive.code.CodeComponent<D>
org.praxislive.code.CodeContainer<D>
- Type Parameters:
D- wrapped delegate base type
- All Implemented Interfaces:
Component,Container,Lookup.Provider
public class CodeContainer<D extends CodeContainerDelegate>
extends CodeComponent<D>
implements Container
A CodeContainer is a Container instance that is rewritable at runtime. The
CodeContainer itself remains constant, but passes most responsibility to a
CodeContainer.Context wrapping a CodeContainerDelegate (user
code). This component handles switching from one context to the next. A
CodeComponent cannot be created directly - see CodeFactory.
The CodeContainer supports a property for proxying ports of child components
on to the parent. This is automatically added when the
CodeContainerDelegate.ProxyPorts annotation is used on the
init() method of the delegate.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classCodeConnector subclass for CodeContainers.static classCodeContainer.Context<D extends CodeContainerDelegate>CodeContext subclass for CodeContainers. -
Method Summary
Modifier and TypeMethodDescriptionchildren()Get a Stream of the child IDs that this container makes publicly visible.getAddress(Component child) Get the address for the provided child component, or null if the component is not a child of this container.Get child component with specific ID.getInfo()Get the ComponentInfo object for this component.Get the Lookup from this Provider.Get the Port with the given ID, or null if it does not exist.voidNotify the component that a change has happened in its component hierarchy.voidwrite(TreeWriter writer) If supported, write the state of this component to the providedTreeWriter.Methods inherited from class org.praxislive.code.CodeComponent
getControl, getParent, parentNotifyMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.praxislive.core.Component
getControl, getParent, parentNotify
-
Method Details
-
children
Description copied from interface:ContainerGet a Stream of the child IDs that this container makes publicly visible. Containers may have hidden children that can be returned fromContainer.getChild(java.lang.String)but are not listed here. All IDs returned should correspond to valid components, and (if provided) match the implementation ofContainerProtocol.A Stream is returned allowing flexibility in implementation.
-
getAddress
Description copied from interface:ContainerGet the address for the provided child component, or null if the component is not a child of this container.- Specified by:
getAddressin interfaceContainer- Parameters:
child- component- Returns:
- address, or null of component is not a child of this container.
-
getChild
Description copied from interface:ContainerGet child component with specific ID. -
getInfo
Description copied from interface:ComponentGet the ComponentInfo object for this component.- Specified by:
getInfoin interfaceComponent- Overrides:
getInfoin classCodeComponent<D extends CodeContainerDelegate>- Returns:
- ComponentInfo
-
getPort
Description copied from interface:ComponentGet the Port with the given ID, or null if it does not exist.- Specified by:
getPortin interfaceComponent- Overrides:
getPortin classCodeComponent<D extends CodeContainerDelegate>- Parameters:
id-- Returns:
- Port or null
-
getLookup
Description copied from interface:Lookup.ProviderGet the Lookup from this Provider.- Specified by:
getLookupin interfaceLookup.Provider- Returns:
- lookup
-
hierarchyChanged
public void hierarchyChanged()Description copied from interface:ComponentNotify the component that a change has happened in its component hierarchy. For example its direct parent or an ancestor has changed. This method will be called after parentNotify() if the result of an immediate parent change.- Specified by:
hierarchyChangedin interfaceComponent- Overrides:
hierarchyChangedin classCodeComponent<D extends CodeContainerDelegate>
-
write
Description copied from interface:ComponentIf supported, write the state of this component to the providedTreeWriter. This should allow for the component to be recreated in as close to its current state as possible.To fully support this method, the Component should write its type, component info, and property values, in that order. It may also add custom annotations.
The component should delegate to
Container.getType(org.praxislive.core.Component)to find its type rather than relying directly onComponentInfo.KEY_COMPONENT_TYPE.The default implementation of this method does nothing.
- Specified by:
writein interfaceComponent- Specified by:
writein interfaceContainer- Overrides:
writein classCodeComponent<D extends CodeContainerDelegate>- Parameters:
writer- TreeWriter to write to
-