com.google.gwt.user.client.ui

## Class SplitLayoutPanel

- java.lang.Object
- - com.google.gwt.user.client.ui.UIObject
  - - com.google.gwt.user.client.ui.Widget
    - - com.google.gwt.user.client.ui.Panel
      - - com.google.gwt.user.client.ui.ComplexPanel
        - - com.google.gwt.user.client.ui.DockLayoutPanel
          - - com.google.gwt.user.client.ui.SplitLayoutPanel

- All Implemented Interfaces:
    HasAttachHandlers, HasHandlers, EventListener, AnimatedLayout, HasVisibility, HasWidgets, HasWidgets.ForIsWidget, IndexedPanel, IndexedPanel.ForIsWidget, IsWidget, ProvidesResize, RequiresResize, java.lang.Iterable<Widget>

      public class SplitLayoutPanel
      extends DockLayoutPanel

  A panel that adds user-positioned splitters between each of its child widgets.

  This panel is used in the same way as `DockLayoutPanel`, except that its children's sizes are always specified in `Style.Unit.PX` units, and each pair of child widgets has a splitter between them that the user can drag.

  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-SplitLayoutPanel { the panel itself }
  - .gwt-SplitLayoutPanel .gwt-SplitLayoutPanel-HDragger { horizontal dragger }
  - .gwt-SplitLayoutPanel .gwt-SplitLayoutPanel-VDragger { vertical dragger }

  ### Example

  >     public class SplitLayoutPanelExample implements EntryPoint {

  >       public void onModuleLoad() {
  >         // Create a three-pane layout with splitters.
  >         SplitLayoutPanel p = new SplitLayoutPanel();
  >         p.addWest(new HTML("navigation"), 128);
  >         p.addNorth(new HTML("list"), 384);
  >         p.add(new HTML("details"));

  >         // 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);
  >       }
  >     }

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `(package private) class` | `SplitLayoutPanel.HSplitter`
    `(package private) class` | `SplitLayoutPanel.Splitter`
    `(package private) class` | `SplitLayoutPanel.VSplitter`

    - ### Nested classes/interfaces inherited from class com.google.gwt.user.client.ui.DockLayoutPanel

      `DockLayoutPanel.Direction, DockLayoutPanel.LayoutData`

    - ### Nested classes/interfaces inherited from class com.google.gwt.user.client.ui.UIObject

      `UIObject.DebugIdImpl, UIObject.DebugIdImplEnabled`

    - ### Nested classes/interfaces inherited from interface com.google.gwt.user.client.ui.IndexedPanel

      `IndexedPanel.ForIsWidget`

    - ### Nested classes/interfaces inherited from interface com.google.gwt.user.client.ui.HasWidgets

      `HasWidgets.ForIsWidget`

  - ### Field Summary

    - ### Fields inherited from class com.google.gwt.user.client.ui.Widget

      `eventsToSink`

    - ### Fields inherited from class com.google.gwt.user.client.ui.UIObject

      `DEBUG_ID_PREFIX, MISSING_ELEMENT_ERROR, SETELEMENT_TWICE_ERROR`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SplitLayoutPanel()` Construct a new `SplitLayoutPanel` with the default splitter size of 8px.
    `SplitLayoutPanel(int splitterSize)` Construct a new `SplitLayoutPanel` with the specified splitter size in pixels.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `getSplitterSize()` Return the size of the splitter in pixels.
    `void` | `insert(Widget child, DockLayoutPanel.Direction direction, double size, Widget before)` Adds a widget to the specified edge of the dock.
    `boolean` | `remove(Widget child)` Removes a child widget.
    `void` | `setWidgetHidden(Widget widget, boolean hidden)` Sets whether or not the given widget should be hidden.
    `void` | `setWidgetMinSize(Widget child, int minSize)` Sets the minimum allowable size for the given widget.
    `void` | `setWidgetSnapClosedSize(Widget child, int snapClosedSize)` Sets a size below which the slider will close completely.
    `void` | `setWidgetToggleDisplayAllowed(Widget child, boolean allowed)` Sets whether or not double-clicking on the splitter should toggle the display of the widget.

    - ### Methods inherited from class com.google.gwt.user.client.ui.DockLayoutPanel

      `add, addEast, addEast, addLineEnd, addLineStart, addNorth, addNorth, addSouth, addSouth, addWest, addWest, animate, animate, assertIsChild, forceLayout, getCenter, getCenterHeight, getCenterWidth, getResolvedDirection, getUnit, getWidgetContainerElement, getWidgetDirection, getWidgetSize, insertEast, insertLineEnd, insertLineStart, insertNorth, insertSouth, insertWest, onAttach, onDetach, onResize, setWidgetSize`

    - ### Methods inherited from class com.google.gwt.user.client.ui.ComplexPanel

      `add, add, adjustIndex, checkIndexBoundsForAccess, checkIndexBoundsForInsertion, doLogicalClear, getChildren, getWidget, getWidgetCount, getWidgetIndex, getWidgetIndex, insert, insert, iterator, remove`

    - ### Methods inherited from class com.google.gwt.user.client.ui.Panel

      `add, adopt, clear, doAttachChildren, doDetachChildren, orphan, remove`

    - ### Methods inherited from class com.google.gwt.user.client.ui.Widget

      `addAttachHandler, addBitlessDomHandler, addDomHandler, addHandler, asWidget, asWidgetOrNull, createHandlerManager, delegateEvent, ensureHandlers, fireEvent, getHandlerCount, getHandlerManager, getLayoutData, getParent, isAttached, isOrWasAttached, onBrowserEvent, onLoad, onUnload, removeFromParent, replaceElement, setLayoutData, setParent, sinkEvents, unsinkEvents`

    - ### Methods inherited from class com.google.gwt.user.client.ui.UIObject

      `addStyleDependentName, addStyleName, ensureDebugId, ensureDebugId, ensureDebugId, getAbsoluteLeft, getAbsoluteTop, getElement, getOffsetHeight, getOffsetWidth, getStyleElement, getStyleName, getStyleName, getStylePrimaryName, getStylePrimaryName, getTitle, isVisible, isVisible, onEnsureDebugId, removeStyleDependentName, removeStyleName, resolvePotentialElement, setElement, setElement, setHeight, setPixelSize, setSize, setStyleDependentName, setStyleName, setStyleName, setStyleName, setStyleName, setStylePrimaryName, setStylePrimaryName, setTitle, setVisible, setVisible, setWidth, sinkBitlessEvent, toString`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

- - ### Constructor Detail

    - #### SplitLayoutPanel

          public SplitLayoutPanel()

      Construct a new `SplitLayoutPanel` with the default splitter size of 8px.

    - #### SplitLayoutPanel

          public SplitLayoutPanel(int splitterSize)

      Construct a new `SplitLayoutPanel` with the specified splitter size in pixels.
      Parameters:
        `splitterSize` - the size of the splitter in pixels

  - ### Method Detail

    - #### getSplitterSize

          public int getSplitterSize()

      Return the size of the splitter in pixels.
      Returns:
        the splitter size

    - #### insert

          public void insert(Widget child,
                             DockLayoutPanel.Direction direction,
                             double size,
                             Widget before)

      Description copied from class: `DockLayoutPanel`
      Adds a widget to the specified edge of the dock. If the widget is already a child of this panel, this method behaves as though `DockLayoutPanel.remove(Widget)` had already been called.
      Overrides:
        `insert` in class `DockLayoutPanel`
      Parameters:
        `child` - the widget to be added
        `direction` - the widget's direction in the dock
        `before` - the widget before which to insert the new child, or `null` to append

    - #### remove

          public boolean remove(Widget child)

      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 `DockLayoutPanel`
      Parameters:
        `child` - the widget to be removed
      Returns:
        `true` if the child was present

    - #### setWidgetHidden

          public void setWidgetHidden(Widget widget,
                                      boolean hidden)

      Description copied from class: `DockLayoutPanel`
      Sets whether or not the given widget should be hidden.
      Overrides:
        `setWidgetHidden` in class `DockLayoutPanel`
      Parameters:
        `widget` - the widget to hide or display
        `hidden` - true to hide the widget, false to display it

    - #### setWidgetMinSize

          public void setWidgetMinSize(Widget child,
                                       int minSize)

      Sets the minimum allowable size for the given widget.

      Its associated splitter cannot be dragged to a position that would make it smaller than this size. This method has no effect for the `DockLayoutPanel.Direction.CENTER` widget.

      Parameters:
        `child` - the child whose minimum size will be set
        `minSize` - the minimum size for this widget

    - #### setWidgetSnapClosedSize

          public void setWidgetSnapClosedSize(Widget child,
                                              int snapClosedSize)

      Sets a size below which the slider will close completely. This can be used in conjunction with `setWidgetMinSize(com.google.gwt.user.client.ui.Widget, int)` to provide a speed-bump effect where the slider will stick to a preferred minimum size before closing completely.

      This method has no effect for the `DockLayoutPanel.Direction.CENTER` widget.

      Parameters:
        `child` - the child whose slider should snap closed
        `snapClosedSize` - the width below which the widget will close or -1 to disable.

    - #### setWidgetToggleDisplayAllowed

          public void setWidgetToggleDisplayAllowed(Widget child,
                                                    boolean allowed)

      Sets whether or not double-clicking on the splitter should toggle the display of the widget.
      Parameters:
        `child` - the child whose display toggling will be allowed or not.
        `allowed` - whether or not display toggling is allowed for this widget