Package org.apache.tapestry5.internal.structure

## Interface ComponentPageElement

- All Superinterfaces:
    `BodyPageElement`, `ComponentResourcesCommon`, `InternalComponentResourcesCommon`, `Locatable`, `RenderCommand`
  All Known Implementing Classes:
    `ComponentPageElementImpl`

      public interface ComponentPageElement
      extends ComponentResourcesCommon, InternalComponentResourcesCommon, RenderCommand, BodyPageElement

  Defines an element of a `Page` that is a full `Component`, including the possibility of its own template and mixins. This is distinct from other renderable elements of the page, which represent fixed or dynamic text, or markup element that may have dynamic attribute values.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addBlock​(java.lang.String blockId, Block block)` | Used during the contruction of a page to add a non-anonymous Block to the component.
    `void` | `addMixin​(java.lang.String mixinId, Instantiator instantiator, java.lang.String... order)` | Adds a mixin.
    `void` | `addToTemplate​(RenderCommand element)` | Used during the construction of a page.
    `void` | `bindMixinParameter​(java.lang.String mixinId, java.lang.String parameterName, Binding binding)` |
    `boolean` | `dispatchEvent​(ComponentEvent event)` | Asks each mixin and component to `Component.dispatchComponentEvent(ComponentEvent)`, returning true if any handler was found.
    `void` | `enqueueBeforeRenderBody​(RenderQueue queue)` | Invoked when the component should render its body.
    `Component` | `getComponent()` | Returns the core component associated with this page element (as opposed to any mixins attached to the component).
    `InternalComponentResources` | `getComponentResources()` | Returns the resources associated with the core component.
    `ComponentPageElement` | `getContainerElement()` | Containing component (or null for the root component of a page).
    `Page` | `getContainingPage()` | Returns the page which contains this component.
    `ComponentPageElement` | `getEmbeddedElement​(java.lang.String id)` | Retrieves a component page element by its id.
    `java.util.Set<java.lang.String>` | `getEmbeddedElementIds()` | Returns the ids of all embedded elements defined within the component.
    `org.slf4j.Logger` | `getEventLogger()` | Returns a logger used to for logging event dispatch and event method invocation.
    `ComponentResources` | `getMixinResources​(java.lang.String mixinId)` | Returns the `ComponentResources` for a mixin attached to this component element.
    `ComponentPageElement` | `newChild​(java.lang.String id, java.lang.String nestedId, java.lang.String completeId, java.lang.String elementName, Instantiator instantiator, Location location)` | Creates a new child component of the invoked component.

    - ### Methods inherited from interface org.apache.tapestry5.internal.structure.BodyPageElement

      `addToBody`

    - ### Methods inherited from interface org.apache.tapestry5.ComponentResourcesCommon

      `createEventLink, createFormEventLink, findBlock, getBlock, getBody, getCompleteId, getElementName, getId, getLocale, getLogger, getNestedId, getPageName, getResourceSelector, hasBody, isRendering, triggerContextEvent, triggerEvent`

    - ### Methods inherited from interface org.apache.tapestry5.internal.InternalComponentResourcesCommon

      `bindParameter, getBinding, getInformalParameterBindings, getMixinByClassName, isLoaded`

    - ### Methods inherited from interface org.apache.tapestry5.commons.Locatable

      `getLocation`

    - ### Methods inherited from interface org.apache.tapestry5.runtime.RenderCommand

      `render`

- - ### Method Detail

    - #### getComponent

          Component getComponent()

      Returns the core component associated with this page element (as opposed to any mixins attached to the component).

    - #### getComponentResources

          InternalComponentResources getComponentResources()

      Returns the resources associated with the core component.

    - #### getContainingPage

          Page getContainingPage()

      Returns the page which contains this component.

    - #### getContainerElement

          ComponentPageElement getContainerElement()

      Containing component (or null for the root component of a page).

    - #### addToTemplate

          void addToTemplate​(RenderCommand element)

      Used during the construction of a page. Adds a page element as part of the template for this page element. A page element will eventually render by sequentially rendering these elements. A page elements template is really just the outermost portions of the component's template ... where a template contains elements that are all components, those components will receive portions of the template as their body.

    - #### addBlock

          void addBlock​(java.lang.String blockId,
                        Block block)

      Used during the contruction of a page to add a non-anonymous Block to the component.
      See Also:
        `ComponentResourcesCommon.getBlock(String)`

    - #### addMixin

          void addMixin​(java.lang.String mixinId,
                        Instantiator instantiator,
                        java.lang.String... order)

      Adds a mixin.
      Parameters:
        `mixinId` - a unique id for the mixin, the last term of the mixin's class name
        `instantiator` - used to instantiate an instance of the mixin
        `order` - Ordering strings used to determine the order of mixin execution.

    - #### bindMixinParameter

          void bindMixinParameter​(java.lang.String mixinId,
                                  java.lang.String parameterName,
                                  Binding binding)

      Parameters:
        `mixinId` - id of previously added mixin
        `parameterName` - simple (unqualified) name of parameter
        `binding` - binding for parameter
      Since:
        5.1.0.0

    - #### getEmbeddedElement

          ComponentPageElement getEmbeddedElement​(java.lang.String id)

      Retrieves a component page element by its id. The search is caseless.
      Parameters:
        `id` - used to locate the element
      Returns:
        the page element
      Throws:
        `java.lang.IllegalArgumentException` - if no component exists with the given id

    - #### getEmbeddedElementIds

          @IncompatibleChange(release="5.8.3",
                              details="Added method")
          java.util.Set<java.lang.String> getEmbeddedElementIds()

      Returns the ids of all embedded elements defined within the component.
      Since:
        5.8.3

    - #### getMixinResources

          ComponentResources getMixinResources​(java.lang.String mixinId)

      Returns the `ComponentResources` for a mixin attached to this component element. Mixin ids are the simple names of the mixin class.
      Parameters:
        `mixinId` - the mixin id (case insensitive)
      Returns:
        the resources for the component
      Throws:
        `java.lang.IllegalArgumentException` - if no mixin with the given id exists

    - #### enqueueBeforeRenderBody

          void enqueueBeforeRenderBody​(RenderQueue queue)

      Invoked when the component should render its body.

    - #### dispatchEvent

          boolean dispatchEvent​(ComponentEvent event)

      Asks each mixin and component to `Component.dispatchComponentEvent(ComponentEvent)`, returning true if any handler was found.
      Parameters:
        `event` - to be handled
      Returns:
        true if a handler was found

    - #### newChild

          ComponentPageElement newChild​(java.lang.String id,
                                        java.lang.String nestedId,
                                        java.lang.String completeId,
                                        java.lang.String elementName,
                                        Instantiator instantiator,
                                        Location location)

      Creates a new child component of the invoked component. The new element will be added as an embedded element of its container.
      Parameters:
        `id` - simple id of the new component
        `nestedId` -
        `completeId` -
        `elementName` - name of the component's element in its container's template
        `instantiator` - used to create a component instance, and access the component's model
        `location` - location of the element within its container's template @return the new component

    - #### getEventLogger

          org.slf4j.Logger getEventLogger()

      Returns a logger used to for logging event dispatch and event method invocation.