org.zkoss.zul
Class Tabbox

java.lang.Object
  extended by org.zkoss.zk.ui.AbstractComponent
      extended by org.zkoss.zk.ui.HtmlBasedComponent
          extended by org.zkoss.zul.impl.XulElement
              extended by org.zkoss.zul.Tabbox
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Component, Scope, ComponentCtrl

public class Tabbox
extends XulElement

A tabbox.

Event:

  1. org.zkoss.zk.ui.event.SelectEvent is sent when user changes the tab.

Mold:

default
The default tabbox.
accordion
The accordion tabbox.

Toolbar only works in the horizontal default mold and the isTabscroll() to be true. (since 3.6.3)

Default getZclass(): z-tabbox. (since 3.5.0)

Besides creating Tab and Tabpanel programmatically, you could assign a data model (a ListModel to a Tabbox via setModel(ListModel) and then the tabbox will retrieve data via ListModel.getElementAt(int) when necessary. (since 7.0.0) [ZK EE]

Besides assign a list model, you could assign a renderer (a TabboxRenderer instance) to a Tabbox, such that the Tabbox will use this renderer to render the data returned by ListModel.getElementAt(int). If not assigned, the default renderer, which assumes a label per Tab and Tabpanel, is used. In other words, the default renderer adds a label to a Tab and Tabpanel by calling toString against the object returned by ListModel.getElementAt(int) (since 7.0.0) [ZK EE]

To retrieve what are selected in Tabbox with a Selectable ListModel, you shall use Selectable.getSelection() to get what is currently selected object in ListModel rather than using getSelectedTab(). That is, you shall operate on the data of the ListModel rather than on the Tab of the Tabbox if you use the Selectable ListModel. (since 7.0.0) [ZK EE]


 Set selection = ((Selectable)getModel()).getSelection();
 

Author:
tomyeh
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.zkoss.zk.ui.HtmlBasedComponent
HtmlBasedComponent.ExtraCtrl
 
Nested classes/interfaces inherited from class org.zkoss.zk.ui.AbstractComponent
AbstractComponent.Children
 
Field Summary
 
Fields inherited from class org.zkoss.zk.ui.HtmlBasedComponent
_zclass
 
Fields inherited from interface org.zkoss.zk.ui.Component
APPLICATION_SCOPE, COMPONENT_SCOPE, DESKTOP_SCOPE, PAGE_SCOPE, REQUEST_SCOPE, SESSION_SCOPE, SPACE_SCOPE
 
Fields inherited from interface org.zkoss.zk.ui.sys.ComponentCtrl
CE_BUSY_IGNORE, CE_DUPLICATE_IGNORE, CE_IMPORTANT, CE_NON_DEFERRABLE, CE_REPEAT_IGNORE
 
Constructor Summary
Tabbox()
           
 
Method Summary
 void beforeChildAdded(Component child, Component refChild)
          Default: does nothing.
protected  void clearSelectedTab()
           
 java.lang.Object clone()
          Clones the component.
 TabboxEngine getEngine()
          Returns the implementation tabbox engine.
<T> ListModel<T>
getModel()
          Returns the model associated with this selectbox, or null if this selectbox is not associated with any list data model.
 java.lang.String getOrient()
          Returns the orient.
 java.lang.String getPanelSpacing()
          Returns the spacing between Tabpanel.
 Selectable<java.lang.Object> getSelectableModel()
           
 int getSelectedIndex()
          Returns the selected index.
 Tabpanel getSelectedPanel()
          Returns the selected tab panel.
 Tab getSelectedTab()
          Returns the selected tab.
<T> TabboxRenderer<T>
getTabboxRenderer()
          Returns the renderer to render each tab and tabpanel, or null if the default renderer is used.
 Tabpanels getTabpanels()
          Returns the tabpanels that this tabbox owns.
 Tabs getTabs()
          Returns the tabs that this tabbox owns.
 Toolbar getToolbar()
          Returns the auxiliary toolbar that this tabbox owns.
 java.lang.String getZclass()
          Returns the ZK Cascading Style class(es) for this component.
 boolean insertBefore(Component child, Component refChild)
          Inserts a child before the reference child.
 boolean isBottom()
          Returns whether it is the bottom orientation.
 boolean isHorizontal()
          Returns whether it is a horizontal tabbox.
 boolean isLeft()
          Returns whether it is the left orientation.
 boolean isMaximalHeight()
          Returns whether to use maximum height of all tabpanel in initial phase.
 boolean isRight()
          Returns whether it is the right orientation.
 boolean isTabscroll()
          Returns whether the tab scrolling is enabled.
 boolean isTop()
          Returns whether it is the top orientation.
 boolean isVertical()
          Returns whether it is a vertical tabbox.
protected  TabboxEngine newTabboxEngine()
          Instantiates the default tabbox engine.
 void onChildRemoved(Component child)
          Default: does nothing.
 void onInitRender()
           
 void postOnInitRender()
          Component internal use only.
protected  void renderProperties(ContentRenderer renderer)
          Renders the content of this component, excluding the enclosing tags and children.
 void setEngine(TabboxEngine engine)
          Sets the tabbox engine for ListModel
 void setMaximalHeight(boolean maximalHeight)
          Sets whether to use maximum height of all tabpanel in initial phase.
 void setModel(ListModel<?> model)
          Sets the list model associated with this t.
 void setMold(java.lang.String mold)
          Sets the mold.
 void setOrient(java.lang.String orient)
          Sets the orient.
 void setPanelSpacing(java.lang.String panelSpacing)
          Sets the spacing between Tabpanel.
 void setSelectedIndex(int j)
          Sets the selected index.
 void setSelectedPanel(Tabpanel panel)
          Sets the selected tab panel.
 void setSelectedTab(Tab tab)
          Sets the selected tab.
 void setTabboxRenderer(java.lang.String clsnm)
          Sets the renderer by use of a class name.
 void setTabboxRenderer(TabboxRenderer<?> renderer)
          Sets the renderer which is used to render each tab and tabpanel if getModel() is not null.
 void setTabscroll(boolean tabscroll)
          Sets whether to enable the tab scrolling.
 
Methods inherited from class org.zkoss.zul.impl.XulElement
getContext, getCtrlKeys, getPopup, getTooltip, setContext, setContext, setCtrlKeys, setPopup, setPopup, setTooltip, setTooltip
 
Methods inherited from class org.zkoss.zk.ui.HtmlBasedComponent
focus, getAction, getDraggable, getDroppable, getExtraCtrl, getHeight, getHflex, getLeft, getRenderdefer, getSclass, getStyle, getTooltiptext, getTop, getVflex, getWidth, getZindex, getZIndex, service, setAction, setClass, setDraggable, setDroppable, setFocus, setHeight, setHeightDirectly, setHflex, setHflexDirectly, setLeft, setLeftDirectly, setRenderdefer, setSclass, setStyle, setTooltiptext, setTop, setTopDirectly, setVflex, setWidth, setWidthDirectly, setZclass, setZindex, setZIndex, setZIndexDirectly
 
Methods inherited from class org.zkoss.zk.ui.AbstractComponent
addAnnotation, addAnnotation, addClientEvent, addEventHandler, addEventListener, addEventListener, addForward, addForward, addForward, addForward, addMoved, addRedrawCallback, addScopeListener, addShadowRoot, addShadowRootBefore, addSharedEventHandlerMap, appendChild, applyProperties, beforeChildRemoved, beforeParentChanged, detach, didActivate, didActivate, didDeserialize, didDeserialize, disableBindingAnnotation, disableClientUpdate, enableBindingAnnotation, equals, getAnnotatedProperties, getAnnotatedPropertiesBy, getAnnotation, getAnnotation, getAnnotations, getAnnotations, getAnnotations, getAttribute, getAttribute, getAttribute, getAttributeOrFellow, getAttributes, getAttributes, getAuService, getAutag, getChildren, getClientAttribute, getClientEvents, getDefaultMold, getDefinition, getDesktop, getEventHandler, getEventHandlerNames, getEventListenerMap, getEventListeners, getFellow, getFellow, getFellowIfAny, getFellowIfAny, getFellows, getFirstChild, getId, getLastChild, getListenerIterator, getMold, getNextSibling, getPage, getParent, getPreviousSibling, getRedrawCallback, getRoot, getShadowRoots, getShadowVariable, getShadowVariable0, getSpaceOwner, getSpecialRendererOutput, getStubonly, getSubBindingAnnotationCount, getTemplate, getTemplateNames, getUuid, getWidgetAttribute, getWidgetAttributeNames, getWidgetClass, getWidgetListener, getWidgetListenerNames, getWidgetOverride, getWidgetOverrideNames, hasAttribute, hasAttribute, hasAttribute, hasAttributeOrFellow, hasBindingAnnotation, hasFellow, hasFellow, hasSubBindingAnnotation, invalidate, isChildable, isInvalidated, isListenerAvailable, isVisible, onChildAdded, onPageAttached, onPageDetached, onWrongValue, query, queryAll, redraw, redrawChildren, removeAttribute, removeAttribute, removeAttribute, removeChild, removeEventListener, removeForward, removeForward, removeRedrawCallback, removeScopeListener, removeShadowRoot, render, render, render, replace, response, response, response, service, sessionDidActivate, sessionWillPassivate, setAttribute, setAttribute, setAttribute, setAuService, setAutag, setClientAttribute, setDefinition, setDefinition, setId, setPage, setPageBefore, setParent, setStubonly, setStubonly, setSubBindingAnnotationCount, setTemplate, setVisible, setVisibleDirectly, setWidgetAttribute, setWidgetClass, setWidgetListener, setWidgetOverride, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdateWidgetListener, smartUpdateWidgetOverride, toString, updateByClient, updateSubBindingAnnotationCount, willPassivate, willPassivate, willSerialize, willSerialize
 
Methods inherited from class java.lang.Object
finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Tabbox

public Tabbox()
Method Detail

getEngine

public TabboxEngine getEngine()
                       throws UiException
Returns the implementation tabbox engine.

Throws:
UiException - if failed to load the engine.
Since:
7.0.0

setEngine

public void setEngine(TabboxEngine engine)
Sets the tabbox engine for ListModel

Since:
7.0.0

newTabboxEngine

protected TabboxEngine newTabboxEngine()
                                throws UiException
Instantiates the default tabbox engine. It is called, if setEngine(org.zkoss.zul.impl.TabboxEngine) is not called with non-null engine.

By default, it looks up the library property called org.zkoss.zul.tabbox.engine.class. If found, the value is assumed to be the class name of the tabbox engine (it must implement TabboxEngine). If not found, UiException is thrown.

Derived class might override this method to provide your own default class.

Throws:
UiException - if failed to instantiate the engine
Since:
7.0.0

getSelectableModel

public Selectable<java.lang.Object> getSelectableModel()

setModel

public void setModel(ListModel<?> model)
Sets the list model associated with this t. If a non-null model is assigned, no matter whether it is the same as the previous, it will always cause re-render. [ZK EE]

Parameters:
model - the list model to associate, or null to dissociate any previous model.
Throws:
UiException - if failed to initialize with the model
Since:
7.0.0

getTabboxRenderer

public <T> TabboxRenderer<T> getTabboxRenderer()
Returns the renderer to render each tab and tabpanel, or null if the default renderer is used.

Since:
7.0.0

setTabboxRenderer

public void setTabboxRenderer(TabboxRenderer<?> renderer)
Sets the renderer which is used to render each tab and tabpanel if getModel() is not null. [ZK EE]

Note: changing a render will not cause the tabbox to re-render. If you want it to re-render, you could assign the same model again (i.e., setModel(null) and than setModel(oldModel)), or fire an ListDataEvent event.

Parameters:
renderer - the renderer, or null to use the default.
Throws:
UiException - if failed to initialize with the model
Since:
7.0.0

setTabboxRenderer

public void setTabboxRenderer(java.lang.String clsnm)
                       throws java.lang.ClassNotFoundException,
                              java.lang.NoSuchMethodException,
                              java.lang.IllegalAccessException,
                              java.lang.InstantiationException,
                              java.lang.reflect.InvocationTargetException
Sets the renderer by use of a class name. It creates an instance automatically. [ZK EE]

Throws:
java.lang.ClassNotFoundException
java.lang.NoSuchMethodException
java.lang.IllegalAccessException
java.lang.InstantiationException
java.lang.reflect.InvocationTargetException
Since:
7.0.0
See Also:
setTabboxRenderer(TabboxRenderer)

onInitRender

public void onInitRender()

postOnInitRender

public void postOnInitRender()
Component internal use only.

Since:
7.0.0

getModel

public <T> ListModel<T> getModel()
Returns the model associated with this selectbox, or null if this selectbox is not associated with any list data model.


getTabs

public Tabs getTabs()
Returns the tabs that this tabbox owns.


getToolbar

public Toolbar getToolbar()
Returns the auxiliary toolbar that this tabbox owns.

Since:
3.6.3

getTabpanels

public Tabpanels getTabpanels()
Returns the tabpanels that this tabbox owns.


isTabscroll

public boolean isTabscroll()
Returns whether the tab scrolling is enabled. Default: true.

Since:
3.5.0

setTabscroll

public void setTabscroll(boolean tabscroll)
Sets whether to enable the tab scrolling. When enabled, if tab list is wider than tab bar, left, right arrow will appear.

Since:
3.5.0

isMaximalHeight

public boolean isMaximalHeight()
Returns whether to use maximum height of all tabpanel in initial phase.

Default: false.

Since:
7.0.0

setMaximalHeight

public void setMaximalHeight(boolean maximalHeight)
Sets whether to use maximum height of all tabpanel in initial phase.

The Client ROD feature will be disabled if it is set to true.

Since:
7.0.0

getPanelSpacing

public java.lang.String getPanelSpacing()
Returns the spacing between Tabpanel. This is used by certain molds, such as accordion.

Default: null (no spacing).


setPanelSpacing

public void setPanelSpacing(java.lang.String panelSpacing)
Sets the spacing between Tabpanel. This is used by certain molds, such as accordion.


getSelectedIndex

public int getSelectedIndex()
Returns the selected index.


setSelectedIndex

public void setSelectedIndex(int j)
Sets the selected index.


getSelectedPanel

public Tabpanel getSelectedPanel()
Returns the selected tab panel.


setSelectedPanel

public void setSelectedPanel(Tabpanel panel)
Sets the selected tab panel.


getSelectedTab

public Tab getSelectedTab()
Returns the selected tab.


setSelectedTab

public void setSelectedTab(Tab tab)
Sets the selected tab.


getOrient

public java.lang.String getOrient()
Returns the orient.

Default: "top".

Note: only the default mold supports it (not supported if accordion).


setMold

public void setMold(java.lang.String mold)
Sets the mold.

Specified by:
setMold in interface Component
Overrides:
setMold in class AbstractComponent
Parameters:
mold - default , accordion and accordion-lite
See Also:
ComponentDefinition

setOrient

public void setOrient(java.lang.String orient)
               throws WrongValueException
Sets the orient.

Parameters:
orient - either "top", "left", "bottom or "right".
Throws:
WrongValueException
Since:
7.0.0 "horizontal" is renamed to "top" and "vertical" is renamed to "left".

isHorizontal

public boolean isHorizontal()
Returns whether it is a horizontal tabbox.

Since:
3.0.3

isTop

public boolean isTop()
Returns whether it is the top orientation.

Since:
7.0.0

isBottom

public boolean isBottom()
Returns whether it is the bottom orientation.

Since:
7.0.0

isVertical

public boolean isVertical()
Returns whether it is a vertical tabbox.

Since:
3.0.3

isLeft

public boolean isLeft()
Returns whether it is the left orientation.

Since:
7.0.0

isRight

public boolean isRight()
Returns whether it is the right orientation.

Since:
7.0.0

getZclass

public java.lang.String getZclass()
Description copied from class: HtmlBasedComponent
Returns the ZK Cascading Style class(es) for this component. It usually depends on the implementation of the mold (AbstractComponent.getMold()).

Default: null (the default value depends on element).

HtmlBasedComponent.setZclass(java.lang.String)) will completely replace the default style of a component. In other words, the default style of a component is associated with the default value of HtmlBasedComponent.getZclass(). Once it is changed, the default style won't be applied at all. If you want to perform small adjustments, use HtmlBasedComponent.setSclass(java.lang.String) instead.

Overrides:
getZclass in class HtmlBasedComponent
See Also:
HtmlBasedComponent.getSclass()

beforeChildAdded

public void beforeChildAdded(Component child,
                             Component refChild)
Description copied from class: AbstractComponent
Default: does nothing.

Specified by:
beforeChildAdded in interface ComponentCtrl
Overrides:
beforeChildAdded in class AbstractComponent
Parameters:
child - the child to be added (never null).
refChild - another child component that the new child will be inserted before it. If null, the new child will be the last child.
See Also:
ComponentCtrl.beforeChildAdded(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)

insertBefore

public boolean insertBefore(Component child,
                            Component refChild)
Description copied from interface: Component
Inserts a child before the reference child.

You could use Component.setParent(org.zkoss.zk.ui.Component) or Component.appendChild(org.zkoss.zk.ui.Component) instead of this method, unless you want to control where to put the child.

Note: Component.setParent(org.zkoss.zk.ui.Component) always calls back Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component) and/or Component.removeChild(org.zkoss.zk.ui.Component), while Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component) and Component.removeChild(org.zkoss.zk.ui.Component) always calls back Component.setParent(org.zkoss.zk.ui.Component), if the parent is changed. Thus, you don't need to override both Component.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component) and Component.setParent(org.zkoss.zk.ui.Component), if you want to customize the behavior.

If you would like to monitor if a component is attached or detached from a page, you could register a desktop listener implementing UiLifeCycle.

Specified by:
insertBefore in interface Component
Overrides:
insertBefore in class AbstractComponent
Parameters:
child - the new child to be inserted.
refChild - the child before which you want the new child being inserted. If null, the new child is append to the end.
Returns:
true if newChild is added successfully or moved; false if it already has the specified child and the order doesn't change.

onChildRemoved

public void onChildRemoved(Component child)
Description copied from class: AbstractComponent
Default: does nothing.

Specified by:
onChildRemoved in interface ComponentCtrl
Overrides:
onChildRemoved in class AbstractComponent
See Also:
ComponentCtrl.onChildRemoved(org.zkoss.zk.ui.Component)

clearSelectedTab

protected void clearSelectedTab()

clone

public java.lang.Object clone()
Description copied from interface: Component
Clones the component. All of its children and descendants are cloned. Also, ID are preserved.

Specified by:
clone in interface Component
Overrides:
clone in class XulElement
Returns:
the new component. Notice that it doesn't belong to any page, nor desktop. It doesn't have a parent, either.

renderProperties

protected void renderProperties(ContentRenderer renderer)
                         throws java.io.IOException
Description copied from class: HtmlBasedComponent
Renders the content of this component, excluding the enclosing tags and children.

See also ZK Client-side Reference: Property Rendering

Overrides:
renderProperties in class XulElement
Throws:
java.io.IOException


Copyright © 2005-2011 Potix Corporation. All Rights Reserved. SourceForge.net Logo