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
`(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
`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