GWT 2.7.0

com.google.gwt.user.client.ui
Class StackPanel

java.lang.Object
  extended by com.google.gwt.user.client.ui.UIObject
      extended by com.google.gwt.user.client.ui.Widget
          extended by com.google.gwt.user.client.ui.Panel
              extended by com.google.gwt.user.client.ui.ComplexPanel
                  extended by com.google.gwt.user.client.ui.StackPanel
All Implemented Interfaces:
HasAttachHandlers, HasHandlers, EventListener, HasVisibility, HasWidgets, HasWidgets.ForIsWidget, IndexedPanel, IndexedPanel.ForIsWidget, InsertPanel, InsertPanel.ForIsWidget, IsWidget, java.lang.Iterable<Widget>
Direct Known Subclasses:
DecoratedStackPanel

public class StackPanel
extends ComplexPanel
implements InsertPanel.ForIsWidget

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 quirks mode. If your application is in Standards Mode, use StackLayoutPanel instead.

CSS Style Rules

Example

public class StackPanelExample implements EntryPoint {

  public void onModuleLoad() {
    // Create a stack panel containing three labels.
    StackPanel panel = new StackPanel();
    panel.add(new Label("Foo"), "foo");
    panel.add(new Label("Bar"), "bar");
    panel.add(new Label("Baz"), "baz");

    // Add it to the root panel.
    RootPanel.get().add(panel);
  }
}

See Also:
StackLayoutPanel

Nested Class Summary
 
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.InsertPanel
InsertPanel.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
StackPanel()
          Creates an empty stack panel.
 
Method Summary
 void add(Widget w)
          Adds a child widget.
 void add(Widget w, SafeHtml stackHtml)
          Adds a new child with the given widget and header, optionally interpreting the header as HTML.
 void add(Widget w, java.lang.String stackText)
          Adds a new child with the given widget and header.
 void add(Widget w, java.lang.String stackText, boolean asHTML)
          Adds a new child with the given widget and header, optionally interpreting the header as HTML.
 void addHeaderStyleName(int index, java.lang.String styleName)
          Adds the styleName on the <tr> for the header specified by index.
(package private)  Element createHeaderElem()
          Returns a header element.
(package private)  Element getHeaderTextElem(Element headerElem)
          Get the element that holds the header text given the header element created by #createHeaderElement.
 int getSelectedIndex()
          Gets the currently selected child index.
 void insert(IsWidget w, int beforeIndex)
           
 void insert(Widget w, int beforeIndex)
          Inserts a child widget before the specified index.
 void onBrowserEvent(Event event)
          Fired whenever a browser event is received.
protected  void onEnsureDebugId(java.lang.String baseID)
          Affected Elements: -text# = The element around the header at the specified index. -text-wrapper# = The element around the header at the specified index. -content# = The element around the body at the specified index.
 boolean remove(int index)
          Removes the widget at the specified index.
 boolean remove(Widget child)
          Removes a child widget.
 void removeHeaderStyleName(int index, java.lang.String styleName)
          Removes the styleName off the <tr> for the header specified by index.
 void setStackText(int index, SafeHtml html)
          Sets the html associated with a child by its index.
 void setStackText(int index, java.lang.String text)
          Sets the text associated with a child by its index.
 void setStackText(int index, java.lang.String text, boolean asHTML)
          Sets the text associated with a child by its index.
 void showStack(int index)
          Shows the widget at the specified child index.
 
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
 
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, onAttach, onDetach, 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, 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 com.google.gwt.user.client.ui.InsertPanel.ForIsWidget
add
 
Methods inherited from interface com.google.gwt.user.client.ui.IndexedPanel.ForIsWidget
getWidgetIndex
 
Methods inherited from interface com.google.gwt.user.client.ui.IndexedPanel
getWidget, getWidgetCount, getWidgetIndex
 

Constructor Detail

StackPanel

public StackPanel()
Creates an empty stack panel.

Method Detail

add

public void add(Widget w)
Description copied from class: Panel
Adds a child widget.

How to Override this Method

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

  1. Validate: Perform any sanity checks to ensure the Panel can accept a new Widget. Examples: checking for a valid index on insertion; checking that the Panel is not full if there is a max capacity.
  2. Adjust for Reinsertion: Some Panels need to handle the case where the Widget is already a child of this Panel. Example: when performing a reinsert, the index might need to be adjusted to account for the Widget's removal. See ComplexPanel.adjustIndex(Widget, int).
  3. Detach Child: Remove the Widget from its existing parent, if any. Most Panels will simply call Widget.removeFromParent() on the Widget.
  4. Logical Attach: Any state variables of the Panel should be updated to reflect the addition of the new Widget. Example: the Widget is added to the Panel's WidgetCollection at the appropriate index.
  5. Physical Attach: The Widget's Element must be physically attached to the Panel's Element, either directly or indirectly.
  6. Adopt: Call Panel.adopt(Widget) to finalize the add as the very last step.

Specified by:
add in interface HasWidgets
Specified by:
add in interface InsertPanel
Overrides:
add in class Panel
Parameters:
w - the widget to be added
See Also:
HasWidgets.add(Widget)

add

public void add(Widget w,
                java.lang.String stackText)
Adds a new child with the given widget and header.

Parameters:
w - the widget to be added
stackText - the header text associated with this widget

add

public void add(Widget w,
                SafeHtml stackHtml)
Adds a new child with the given widget and header, optionally interpreting the header as HTML.

Parameters:
w - the widget to be added
stackHtml - the header html associated with this widget

add

public void add(Widget w,
                java.lang.String stackText,
                boolean asHTML)
Adds a new child with the given widget and header, optionally interpreting the header as HTML.

Parameters:
w - the widget to be added
stackText - the header text associated with this widget
asHTML - true to treat the specified text as HTML

getSelectedIndex

public int getSelectedIndex()
Gets the currently selected child index.

Returns:
selected child

insert

public void insert(IsWidget w,
                   int beforeIndex)
Specified by:
insert in interface InsertPanel.ForIsWidget

insert

public void insert(Widget w,
                   int beforeIndex)
Description copied from interface: InsertPanel
Inserts a child widget before the specified index. If the widget is already a child of this panel, it will be moved to the specified index.

Specified by:
insert in interface InsertPanel
Parameters:
w - the child widget to be inserted
beforeIndex - the index before which it will be inserted

onBrowserEvent

public void onBrowserEvent(Event event)
Description copied from interface: EventListener
Fired whenever a browser event is received.

Specified by:
onBrowserEvent in interface EventListener
Overrides:
onBrowserEvent in class Widget
Parameters:
event - the event received

remove

public boolean remove(int index)
Description copied from interface: IndexedPanel
Removes the widget at the specified index.

Specified by:
remove in interface IndexedPanel
Overrides:
remove in class ComplexPanel
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 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:
child - the widget to be removed
Returns:
true if the child was present

setStackText

public void setStackText(int index,
                         java.lang.String text)
Sets the text associated with a child by its index.

Parameters:
index - the index of the child whose text is to be set
text - the text to be associated with it

setStackText

public void setStackText(int index,
                         SafeHtml html)
Sets the html associated with a child by its index.

Parameters:
index - the index of the child whose text is to be set
html - the html to be associated with it

setStackText

public void setStackText(int index,
                         java.lang.String text,
                         boolean asHTML)
Sets the text associated with a child by its index.

Parameters:
index - the index of the child whose text is to be set
text - the text to be associated with it
asHTML - true to treat the specified text as HTML

showStack

public void showStack(int index)
Shows the widget at the specified child index.

Parameters:
index - the index of the child to be shown

onEnsureDebugId

protected void onEnsureDebugId(java.lang.String baseID)
Affected Elements:

Overrides:
onEnsureDebugId in class UIObject
Parameters:
baseID - the base ID used by the main element
See Also:
UIObject.onEnsureDebugId(String)

createHeaderElem

Element createHeaderElem()
Returns a header element.


getHeaderTextElem

Element getHeaderTextElem(Element headerElem)
Get the element that holds the header text given the header element created by #createHeaderElement.

Parameters:
headerElem - the header element
Returns:
the element around the header text

addHeaderStyleName

public void addHeaderStyleName(int index,
                               java.lang.String styleName)
Adds the styleName on the <tr> for the header specified by index.

Parameters:
index - the index of the header row to apply to the style to
styleName - the name of the class to add

removeHeaderStyleName

public void removeHeaderStyleName(int index,
                                  java.lang.String styleName)
Removes the styleName off the <tr> for the header specified by index.

Parameters:
index - the index of the header row to remove the style from
styleName - the name of the class to remove

GWT 2.7.0