Class CompositeCell<C>

  • Type Parameters:
    C - the type that this Cell represents
    All Implemented Interfaces:
    Cell<C>

    public class CompositeCell<C>
    extends AbstractCell<C>

    A Cell that is composed of other Cells.

    When this cell is rendered, it will render each component Cell inside a span. If the component Cell uses block level elements (such as a Div), the component cells will stack vertically.

    • Constructor Detail

      • CompositeCell

        public CompositeCell​(java.util.List<HasCell<C,​?>> hasCells)
        Construct a new CompositeCell.
        Parameters:
        hasCells - the cells that makeup the composite
    • Method Detail

      • dependsOnSelection

        public boolean dependsOnSelection()
        Description copied from interface: Cell
        Check if this cell depends on the selection state.
        Specified by:
        dependsOnSelection in interface Cell<C>
        Overrides:
        dependsOnSelection in class AbstractCell<C>
        Returns:
        true if dependent on selection, false if not
      • handlesSelection

        public boolean handlesSelection()
        Description copied from interface: Cell
        Check if this cell handles selection. If the cell handles selection, then its container should not automatically handle selection.
        Specified by:
        handlesSelection in interface Cell<C>
        Overrides:
        handlesSelection in class AbstractCell<C>
        Returns:
        true if the cell handles selection, false if not
      • isEditing

        public boolean isEditing​(Cell.Context context,
                                 Element parent,
                                 C value)
        Description copied from class: AbstractCell
        Returns false. Subclasses that support editing should override this method to return the current editing status.
        Specified by:
        isEditing in interface Cell<C>
        Overrides:
        isEditing in class AbstractCell<C>
        Parameters:
        context - the Cell.Context of the cell
        parent - the parent Element
        value - the value associated with the cell
        Returns:
        true if the cell is in edit mode
      • onBrowserEvent

        public void onBrowserEvent​(Cell.Context context,
                                   Element parent,
                                   C value,
                                   NativeEvent event,
                                   ValueUpdater<C> valueUpdater)
        Description copied from class: AbstractCell
        Handle a browser event that took place within the cell. The default implementation returns null.

        If you override this method to add support for events, remember to pass the event types that the cell expects into the constructor.

        Specified by:
        onBrowserEvent in interface Cell<C>
        Overrides:
        onBrowserEvent in class AbstractCell<C>
        Parameters:
        context - the Cell.Context of the cell
        parent - the parent Element
        value - the value associated with the cell
        event - the native browser event
        valueUpdater - a ValueUpdater, or null if not specified
      • render

        public void render​(Cell.Context context,
                           C value,
                           SafeHtmlBuilder sb)
        Description copied from interface: Cell
        Render a cell as HTML into a SafeHtmlBuilder, suitable for passing to Element.setInnerHTML(String) on a container element.

        Note: If your cell contains natively focusable elements, such as buttons or input elements, be sure to set the tabIndex to -1 so that they do not steal focus away from the containing widget.

        Specified by:
        render in interface Cell<C>
        Specified by:
        render in class AbstractCell<C>
        Parameters:
        context - the Cell.Context of the cell
        value - the cell value to be rendered
        sb - the SafeHtmlBuilder to be written to
      • resetFocus

        public boolean resetFocus​(Cell.Context context,
                                  Element parent,
                                  C value)
        Description copied from class: AbstractCell
        Reset focus on the Cell. This method is called if the cell has focus when it is refreshed.

        This method is a no-op and returns false. If your cell is editable or can be focused by the user, override this method to reset focus when the containing widget is refreshed.

        Specified by:
        resetFocus in interface Cell<C>
        Overrides:
        resetFocus in class AbstractCell<C>
        Parameters:
        context - the Cell.Context of the cell
        parent - the parent Element
        value - the value associated with the cell
        Returns:
        true if focus is taken, false if not
      • getHasCells

        public java.util.List<HasCell<C,​?>> getHasCells()
        Returns the readonly list of HasCell's that make up this composite.
      • getContainerElement

        protected Element getContainerElement​(Element parent)
        Get the element that acts as the container for all children. If children are added directly to the parent, the parent is the container. If children are added in a table row, the row is the parent.
        Parameters:
        parent - the parent element of the cell
        Returns:
        the container element
      • render

        protected <X> void render​(Cell.Context context,
                                  C value,
                                  SafeHtmlBuilder sb,
                                  HasCell<C,​X> hasCell)
        Render the composite cell as HTML into a SafeHtmlBuilder, suitable for passing to Element.setInnerHTML(java.lang.String) on a container element.

        Note: If your cell contains natively focusable elements, such as buttons or input elements, be sure to set the tabIndex to -1 so that they do not steal focus away from the containing widget.

        Parameters:
        context - the Context of the cell
        value - the cell value to be rendered
        sb - the SafeHtmlBuilder to be written to
        hasCell - a HasCell instance containing the cells to be rendered within this cell