Class LayoutPanel

  • All Implemented Interfaces:
    HasAttachHandlers, HasHandlers, EventListener, AnimatedLayout, HasVisibility, HasWidgets, HasWidgets.ForIsWidget, IndexedPanel, IndexedPanel.ForIsWidget, IsWidget, ProvidesResize, RequiresResize, java.lang.Iterable<Widget>
    Direct Known Subclasses:
    RootLayoutPanel

    public class LayoutPanel
    extends ComplexPanel
    implements AnimatedLayout, RequiresResize, ProvidesResize
    A panel that lays its children out in arbitrary layers using the Layout class.

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

    Example

    public class LayoutPanelExample implements EntryPoint {
    
      public void onModuleLoad() {
        // Attach two child widgets to a LayoutPanel, laying them out horizontally,
        // splitting at 50%.
        Widget childOne = new HTML("left"), childTwo = new HTML("right");
        LayoutPanel p = new LayoutPanel();
        p.add(childOne);
        p.add(childTwo);
    
        p.setWidgetLeftWidth(childOne, 0, PCT, 50, PCT);
        p.setWidgetRightWidth(childTwo, 0, PCT, 50, PCT);
    
        // 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

    LayoutPanel elements in UiBinder templates lay out their children with arbitrary constraints, using <g:layer> elements. Each layer may have any of the following constraint attributes specified as CSS length attributes: left, top, right, bottom, width , and height.

    Precisely zero or two constraints are required for each axis (horizontal and vertical). Specifying no constraints implies that the child should fill that axis completely.

    The valid sets of horizontal constraints are:

    (none)
    Fill the parent's horizontal axis
    left, width
    Fixed width, positioned from parent's left edge
    right, width
    Fixed width, positioned from parent's right edge
    left, right
    Width implied by fixed distance from parent's left and right edges

    The valid sets of vertical constraints are:

    (none)
    Fill the parent's vertical axis
    top, height
    Fixed height, positioned from parent's top edge
    bottom, height
    Fixed height, positioned from parent's bottom edge
    top, bottom
    Height implied by fixed distance from parent's top and bottom edges

    The values of constraint attributes can be any valid CSS length, such as 1px, 3em, or 0 (zero lengths require no units).

    For example:

     <g:LayoutPanel>
       <!-- No constraints causes the layer to fill the parent -->
       <g:layer>
         <g:Label>Lorem ipsum...</g:Label>
       </g:layer>
       <!-- Position horizontally 25% from each edge;
            Vertically 4px from the top and 10em tall. -->
       <g:layer left='25%' right='25%' top='4px' height='10em'>
         <g:Label>Header</g:Label>
       </g:layer>
     </g:LayoutPanel>
     
    • Constructor Detail

      • LayoutPanel

        public LayoutPanel()
        Creates an empty layout panel.
    • Method Detail

      • 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
      • getWidgetContainerElement

        public Element getWidgetContainerElement​(Widget child)
        Gets the container element wrapping the given child widget.
        Parameters:
        child -
        Returns:
        the widget's container element
      • insert

        public void insert​(Widget widget,
                           int beforeIndex)
        Inserts a widget before the specified index.

        By default, each child will fill the panel. To build more interesting layouts, set child widgets' layout constraints using setWidgetLeftRight(Widget, double, Style.Unit, double, Style.Unit) and related methods.

        Inserting a widget in this way has no effect on the DOM structure, but can be useful for other panels that wrap LayoutPanel to maintain insertion order.

        Parameters:
        widget - the widget to be inserted
        beforeIndex - the index before which it will be inserted
        Throws:
        java.lang.IndexOutOfBoundsException - if beforeIndex is out of range
      • onResize

        public void onResize()
        Description copied from interface: RequiresResize
        This method must be called whenever the implementor's size has been modified.
        Specified by:
        onResize in interface RequiresResize
      • remove

        public boolean remove​(Widget w)
        Description copied from class: Panel
        Removes a child widget.

        How to Override this Method

        There are several important things that must take place in the correct order to properly remove a Widget from a Panel. Not all of these steps will be relevant to every Panel, but all of the steps must be considered.

        1. Validate: Make sure this Panel is actually the parent of the child Widget; return false if it is not.
        2. Orphan: Call Panel.orphan(Widget) first while the child Widget is still attached.
        3. Physical Detach: Adjust the DOM to account for the removal of the child Widget. The Widget's Element must be physically removed from the DOM.
        4. Logical Detach: Update the Panel's state variables to reflect the removal of the child Widget. Example: the Widget is removed from the Panel's WidgetCollection.

        Specified by:
        remove in interface HasWidgets
        Overrides:
        remove in class ComplexPanel
        Parameters:
        w - the widget to be removed
        Returns:
        true if the child was present
      • setWidgetBottomHeight

        public void setWidgetBottomHeight​(Widget child,
                                          double bottom,
                                          Style.Unit bottomUnit,
                                          double height,
                                          Style.Unit heightUnit)
        Sets the child widget's bottom and height values.
        Parameters:
        child -
        bottom -
        bottomUnit -
        height -
        heightUnit -
      • setWidgetHorizontalPosition

        public void setWidgetHorizontalPosition​(Widget child,
                                                Layout.Alignment position)
        Sets the child widget's horizontal position within its layer.
        Parameters:
        child -
        position -
      • setWidgetLeftRight

        public void setWidgetLeftRight​(Widget child,
                                       double left,
                                       Style.Unit leftUnit,
                                       double right,
                                       Style.Unit rightUnit)
        Sets the child widget's left and right values.
        Parameters:
        child -
        left -
        leftUnit -
        right -
        rightUnit -
      • setWidgetLeftWidth

        public void setWidgetLeftWidth​(Widget child,
                                       double left,
                                       Style.Unit leftUnit,
                                       double width,
                                       Style.Unit widthUnit)
        Sets the child widget's left and width values.
        Parameters:
        child -
        left -
        leftUnit -
        width -
        widthUnit -
      • setWidgetRightWidth

        public void setWidgetRightWidth​(Widget child,
                                        double right,
                                        Style.Unit rightUnit,
                                        double width,
                                        Style.Unit widthUnit)
        Sets the child widget's right and width values.
        Parameters:
        child -
        right -
        rightUnit -
        width -
        widthUnit -
      • setWidgetTopBottom

        public void setWidgetTopBottom​(Widget child,
                                       double top,
                                       Style.Unit topUnit,
                                       double bottom,
                                       Style.Unit bottomUnit)
        Sets the child widget's top and bottom values.
        Parameters:
        child -
        top -
        topUnit -
        bottom -
        bottomUnit -
      • setWidgetTopHeight

        public void setWidgetTopHeight​(Widget child,
                                       double top,
                                       Style.Unit topUnit,
                                       double height,
                                       Style.Unit heightUnit)
        Sets the child widget's top and height values.
        Parameters:
        child -
        top -
        topUnit -
        height -
        heightUnit -
      • setWidgetVerticalPosition

        public void setWidgetVerticalPosition​(Widget child,
                                              Layout.Alignment position)
        Sets the child widget's vertical position within its layer.
        Parameters:
        child -
        position -
      • setWidgetVisible

        public void setWidgetVisible​(Widget child,
                                     boolean visible)
        Shows or hides the given widget and its layer. This method explicitly calls UIObject.setVisible(boolean) on the child widget and ensures that its associated layer is shown/hidden.
        Parameters:
        child -
        visible -
      • getLayout

        Layout getLayout()
        Gets the Layout instance associated with this widget. This is made package-protected for use by RootLayoutPanel.
        Returns:
        this widget's layout instance