Class StackLayoutPanel

  • All Implemented Interfaces:
    HasAttachHandlers, HasBeforeSelectionHandlers<java.lang.Integer>, HasSelectionHandlers<java.lang.Integer>, HasHandlers, EventListener, AnimatedLayout, HasVisibility, HasWidgets, IndexedPanel, IndexedPanel.ForIsWidget, IsRenderable, IsWidget, ProvidesResize, RequiresResize, java.lang.Iterable<Widget>

    public class StackLayoutPanel
    extends ResizeComposite
    implements HasWidgets, ProvidesResize, IndexedPanel.ForIsWidget, AnimatedLayout, HasBeforeSelectionHandlers<java.lang.Integer>, HasSelectionHandlers<java.lang.Integer>
    A panel that stacks its children vertically, displaying only one at a time, with a header for each child which the user can click to display.

    This widget will only work in standards mode, which requires that the HTML page in which it is run have an explicit <!DOCTYPE> declaration.

    CSS Style Rules

    .gwt-StackLayoutPanel
    the panel itself
    .gwt-StackLayoutPanel .gwt-StackLayoutPanelHeader
    applied to each header widget
    .gwt-StackLayoutPanel .gwt-StackLayoutPanelHeader-hovering
    applied to each header widget on mouse hover
    .gwt-StackLayoutPanel .gwt-StackLayoutPanelContent
    applied to each child widget

    Example

    public class StackLayoutPanelExample implements EntryPoint {
    
      public void onModuleLoad() {
        // Create a three-item stack, with headers sized in EMs. 
        StackLayoutPanel p = new StackLayoutPanel(Unit.EM);
        p.add(new HTML("this"), new HTML("[this]"), 4);
        p.add(new HTML("that"), new HTML("[that]"), 4);
        p.add(new HTML("the other"), new HTML("[the other]"), 4);
    
        // Attach the LayoutPanel to the RootLayoutPanel. The latter will listen for
        // resize events on the window to ensure that its children are informed of
        // possible size changes.
        RootLayoutPanel rp = RootLayoutPanel.get();
        rp.add(p);
      }
    }
    

    Use in UiBinder Templates

    A StackLayoutPanel element in a UiBinder template may have a unit attribute with a Style.Unit value (it defaults to PX).

    The children of a StackLayoutPanel element are laid out in <g:stack> elements. Each stack can have one widget child and one of two types of header elements. A <g:header> element can hold html, or a <g:customHeader> element can hold a widget. (Note that the tags of the header elements are not capitalized. This is meant to signal that the head is not a runtime object, and so cannot have a ui:field attribute.)

    For example:

     <g:StackLayoutPanel unit='PX'>
      <g:stack>
        <g:header size='3'><b>HTML</b> header</g:header>
        <g:Label>able</g:Label>
      </g:stack>
      <g:stack>
        <g:customHeader size='3'>
          <g:Label>Custom header</g:Label>
        </g:customHeader>
        <g:Label>baker</g:Label>
      </g:stack>
     </g:StackLayoutPanel>
     
    • Constructor Detail

      • StackLayoutPanel

        public StackLayoutPanel​(Style.Unit unit)
        Creates an empty stack panel.
        Parameters:
        unit - the unit to be used for layout
    • Method Detail

      • add

        public void add​(Widget w)
        Description copied from interface: HasWidgets
        Adds a child widget.
        Specified by:
        add in interface HasWidgets
        Parameters:
        w - the widget to be added
      • add

        public void add​(Widget widget,
                        SafeHtml header,
                        double headerSize)
        Adds a child widget to this stack, along with a widget representing the stack header.
        Parameters:
        widget - the child widget to be added
        header - the html to be shown on its header
        headerSize - the size of the header widget
      • add

        public void add​(Widget widget,
                        java.lang.String header,
                        boolean asHtml,
                        double headerSize)
        Adds a child widget to this stack, along with a widget representing the stack header.
        Parameters:
        widget - the child widget to be added
        header - the text to be shown on its header
        asHtml - true to treat the specified text as HTML
        headerSize - the size of the header widget
      • add

        public void add​(Widget widget,
                        java.lang.String header,
                        double headerSize)
        Adds a child widget to this stack, along with a widget representing the stack header.
        Parameters:
        widget - the child widget to be added
        header - the text to be shown on its header
        headerSize - the size of the header widget
      • add

        public void add​(Widget widget,
                        Widget header,
                        double headerSize)
        Adds a child widget to this stack, along with a widget representing the stack header.
        Parameters:
        widget - the child widget to be added
        header - the header widget
        headerSize - the size of the header widget
      • animate

        public void animate​(int duration)
        Description copied from interface: AnimatedLayout
        Layout children, animating over the specified period of time.
        Specified by:
        animate in interface AnimatedLayout
        Parameters:
        duration - the animation duration, in milliseconds
      • animate

        public void animate​(int duration,
                            Layout.AnimationCallback callback)
        Description copied from interface: AnimatedLayout
        Layout children, animating over the specified period of time.

        This method provides a callback that will be informed of animation updates. This can be used to create more complex animation effects.

        Specified by:
        animate in interface AnimatedLayout
        Parameters:
        duration - the animation duration, in milliseconds
        callback - the animation callback
      • clear

        public void clear()
        Description copied from interface: HasWidgets
        Removes all child widgets.
        Specified by:
        clear in interface HasWidgets
      • getAnimationDuration

        public int getAnimationDuration()
        Get the duration of the animated transition between children.
        Returns:
        the duration in milliseconds
      • getHeaderWidget

        public Widget getHeaderWidget​(int index)
        Gets the widget in the stack header at the given index.
        Parameters:
        index - the index of the stack header to be retrieved
        Returns:
        the header widget
      • getHeaderWidget

        public Widget getHeaderWidget​(Widget child)
        Gets the widget in the stack header associated with the given child widget.
        Parameters:
        child - the child whose stack header is to be retrieved
        Returns:
        the header widget
      • getVisibleIndex

        public int getVisibleIndex()
        Gets the currently-selected index.
        Returns:
        the selected index, or -1 if none is selected
      • getVisibleWidget

        public Widget getVisibleWidget()
        Gets the currently-selected widget.
        Returns:
        the selected widget, or null if none exist
      • getWidget

        public Widget getWidget​(int index)
        Description copied from interface: IndexedPanel
        Gets the child widget at the specified index.
        Specified by:
        getWidget in interface IndexedPanel
        Parameters:
        index - the child widget's index
        Returns:
        the child widget
      • getWidgetCount

        public int getWidgetCount()
        Description copied from interface: IndexedPanel
        Gets the number of child widgets in this panel.
        Specified by:
        getWidgetCount in interface IndexedPanel
        Returns:
        the number of children
      • getWidgetIndex

        public int getWidgetIndex​(Widget child)
        Description copied from interface: IndexedPanel
        Gets the index of the specified child widget.
        Specified by:
        getWidgetIndex in interface IndexedPanel
        Parameters:
        child - the widget to be found
        Returns:
        the widget's index, or -1 if it is not a child of this panel
      • insert

        public void insert​(Widget child,
                           SafeHtml html,
                           double headerSize,
                           int beforeIndex)
        Inserts a widget into the panel. If the Widget is already attached, it will be moved to the requested index.
        Parameters:
        child - the widget to be added
        html - the safe html to be shown on its header
        headerSize - the size of the header widget
        beforeIndex - the index before which it will be inserted
      • insert

        public void insert​(Widget child,
                           java.lang.String text,
                           boolean asHtml,
                           double headerSize,
                           int beforeIndex)
        Inserts a widget into the panel. If the Widget is already attached, it will be moved to the requested index.
        Parameters:
        child - the widget to be added
        text - the text to be shown on its header
        asHtml - true to treat the specified text as HTML
        headerSize - the size of the header widget
        beforeIndex - the index before which it will be inserted
      • insert

        public void insert​(Widget child,
                           java.lang.String text,
                           double headerSize,
                           int beforeIndex)
        Inserts a widget into the panel. If the Widget is already attached, it will be moved to the requested index.
        Parameters:
        child - the widget to be added
        text - the text to be shown on its header
        headerSize - the size of the header widget
        beforeIndex - the index before which it will be inserted
      • insert

        public void insert​(Widget child,
                           Widget header,
                           double headerSize,
                           int beforeIndex)
        Inserts a widget into the panel. If the Widget is already attached, it will be moved to the requested index.
        Parameters:
        child - the widget to be added
        header - the widget to be placed in the associated header
        headerSize - the size of the header widget
        beforeIndex - the index before which it will be inserted
      • iterator

        public java.util.Iterator<Widget> iterator()
        Description copied from interface: HasWidgets
        Gets an iterator for the contained widgets. This iterator is required to implement Iterator.remove().
        Specified by:
        iterator in interface HasWidgets
        Specified by:
        iterator in interface java.lang.Iterable<Widget>
      • remove

        public boolean remove​(int index)
        Description copied from interface: IndexedPanel
        Removes the widget at the specified index.
        Specified by:
        remove in interface IndexedPanel
        Parameters:
        index - the index of the widget to be removed
        Returns:
        false if the widget is not present
      • remove

        public boolean remove​(Widget child)
        Description copied from interface: HasWidgets
        Removes a child widget.
        Specified by:
        remove in interface HasWidgets
        Parameters:
        child - the widget to be removed
        Returns:
        true if the widget was present
      • setAnimationDuration

        public void setAnimationDuration​(int duration)
        Set the duration of the animated transition between children.
        Parameters:
        duration - the duration in milliseconds.
      • setHeaderHTML

        public void setHeaderHTML​(int index,
                                  java.lang.String html)
        Sets a stack header's HTML contents. Use care when setting an object's HTML; it is an easy way to expose script-based security problems. Consider using setHeaderHTML(int, SafeHtml) or setHeaderText(int, String) whenever possible.
        Parameters:
        index - the index of the header whose HTML is to be set
        html - the header's new HTML contents
      • setHeaderHTML

        public void setHeaderHTML​(int index,
                                  SafeHtml html)
        Sets a stack header's HTML contents.
        Parameters:
        index - the index of the header whose HTML is to be set
        html - the header's new HTML contents
      • setHeaderText

        public void setHeaderText​(int index,
                                  java.lang.String text)
        Sets a stack header's text contents.
        Parameters:
        index - the index of the header whose text is to be set
        text - the object's new text
      • showWidget

        public void showWidget​(int index)
        Shows the widget at the specified index and fires events.
        Parameters:
        index - the index of the child widget to be shown.
      • showWidget

        public void showWidget​(int index,
                               boolean fireEvents)
        Shows the widget at the specified index.
        Parameters:
        index - the index of the child widget to be shown.
        fireEvents - true to fire events, false not to
      • showWidget

        public void showWidget​(Widget child)
        Shows the specified widget and fires events.
        Parameters:
        child - the child widget to be shown.
      • showWidget

        public void showWidget​(Widget child,
                               boolean fireEvents)
        Shows the specified widget.
        Parameters:
        child - the child widget to be shown.
        fireEvents - true to fire events, false not to
      • onLoad

        protected void onLoad()
        Description copied from class: Widget
        This method is called immediately after a widget becomes attached to the browser's document.
        Overrides:
        onLoad in class Widget