Class Tabbox
- java.lang.Object
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,Component
,Scope
,ComponentCtrl
public class Tabbox extends XulElement
A tabbox.Event:
- 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 theisTabscroll()
to be true. (since 3.6.3)Default
getZclass()
: z-tabbox. (since 3.5.0)Besides creating
Tab
andTabpanel
programmatically, you could assign a data model (aListModel
to a Tabbox viasetModel(ListModel)
and then the tabbox will retrieve data viaListModel.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 byListModel.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 byListModel.getElementAt(int)
(since 7.0.0) [ZK EE]To retrieve what are selected in Tabbox with a
Selectable
ListModel
, you shall useSelectable.getSelection()
to get what is currently selected object inListModel
rather than usinggetSelectedTab()
. That is, you shall operate on the data of theListModel
rather than on theTab
of theTabbox
if you use theSelectable
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, AbstractComponent.ForwardInfo, AbstractComponent.TargetInfo
-
-
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
AFTER_CHILD_ADDED, AFTER_CHILD_REMOVED, AFTER_PAGE_ATTACHED, AFTER_PAGE_DETACHED, AFTER_PARENT_CHANGED, CE_BUSY_IGNORE, CE_DUPLICATE_IGNORE, CE_IMPORTANT, CE_NON_DEFERRABLE, CE_REPEAT_IGNORE
-
-
Constructor Summary
Constructors Constructor Description Tabbox()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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 betweenTabpanel
.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 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: handles special event listeners.void
onInitRender()
void
onPageAttached(Page newpage, Page oldpage)
Default: handles special event listeners.void
onPageDetached(Page page)
Default: handles special event listeners.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 forListModel
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 betweenTabpanel
.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 ifgetModel()
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, getPropertyAccess, getTooltip, setContext, setContext, setContextAttributes, setCtrlKeys, setPopup, setPopup, setPopupAttributes, setTooltip, setTooltip, setTooltipAttributes
-
Methods inherited from class org.zkoss.zk.ui.HtmlBasedComponent
addSclass, evalCSSFlex, focus, getAction, getClientAction, getDraggable, getDroppable, getExtraCtrl, getHeight, getHflex, getLeft, getRenderdefer, getSclass, getStyle, getTabindex, getTabindexInteger, getTooltiptext, getTop, getVflex, getWidth, getZindex, getZIndex, removeSclass, removeSclass, service, setAction, setClass, setClientAction, setDraggable, setDroppable, setFocus, setHeight, setHeight0, setHeightDirectly, setHflex, setHflex0, setHflexDirectly, setLeft, setLeftDirectly, setRenderdefer, setSclass, setStyle, setTabindex, setTabindex, setTooltiptext, setTop, setTopDirectly, setVflex, setVflex0, setVflexDirectly, setWidth, setWidth0, setWidthDirectly, setZclass, setZindex, setZIndex, setZIndexDirectly
-
Methods inherited from class org.zkoss.zk.ui.AbstractComponent
addAnnotation, addCallback, addClientEvent, addEventHandler, addEventListener, addEventListener, addForward, addForward, addForward, addForward, addMoved, addRedrawCallback, addScopeListener, addShadowRoot, addShadowRootBefore, addSharedEventHandlerMap, appendChild, applyProperties, beforeChildRemoved, beforeParentChanged, destroyIndexCacheMap, detach, didActivate, didActivate, didDeserialize, didDeserialize, disableBindingAnnotation, disableClientUpdate, disableHostChanged, enableBindingAnnotation, enableHostChanged, getAnnotatedProperties, getAnnotatedPropertiesBy, getAnnotation, getAnnotations, getAnnotations, getAttribute, getAttribute, getAttribute, getAttributeOrFellow, getAttributes, getAttributes, getAuService, getAutag, getCallback, getChildren, getClientAttribute, getClientDataAttribute, getClientEvents, getDefaultMold, getDefinition, getDesktop, getEventHandler, getEventHandlerNames, getEventListenerMap, getEventListeners, getFellow, getFellow, getFellowIfAny, getFellowIfAny, getFellows, getFirstChild, getForwards, getId, getIndexCacheMap, getLastChild, getMold, getNextSibling, getPage, getParent, getPreviousSibling, getRedrawCallback, getRoot, getShadowFellowIfAny, getShadowRoots, getShadowVariable, getShadowVariable, getShadowVariable0, getSpaceOwner, getSpecialRendererOutput, getStubonly, getSubBindingAnnotationCount, getTemplate, getTemplateNames, getUuid, getWidgetAttributeNames, getWidgetClass, getWidgetListener, getWidgetListenerNames, getWidgetOverride, getWidgetOverrideNames, hasAttribute, hasAttribute, hasAttribute, hasAttributeOrFellow, hasBindingAnnotation, hasFellow, hasFellow, hasSubBindingAnnotation, initIndexCacheMap, invalidate, isChildable, isDisabledHostChanged, isInitialized, isInvalidated, isListenerAvailable, isVisible, onChildAdded, onParentChanged, onWrongValue, query, queryAll, redraw, redrawChildren, removeAttribute, removeAttribute, removeAttribute, removeCallback, removeChild, removeEventListener, removeForward, removeForward, removeRedrawCallback, removeScopeListener, removeShadowRoot, render, render, render, renderPropertiesOnly, replace, response, response, response, service, sessionDidActivate, sessionWillPassivate, setAttribute, setAttribute, setAttribute, setAuService, setAutag, setClientAttribute, setClientDataAttribute, setDefinition, setDefinition, setId, setPage, setPageBefore, setParent, setStubonly, setStubonly, setSubBindingAnnotationCount, setTemplate, setVisible, setVisibleDirectly, setWidgetClass, setWidgetListener, setWidgetOverride, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdate, smartUpdateWidgetListener, smartUpdateWidgetOverride, toString, updateByClient, updateSubBindingAnnotationCount, willPassivate, willPassivate, willSerialize, willSerialize
-
-
-
-
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 forListModel
- Since:
- 7.0.0
-
newTabboxEngine
protected TabboxEngine newTabboxEngine() throws UiException
Instantiates the default tabbox engine. It is called, ifsetEngine(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 ifgetModel()
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 betweenTabpanel
. This is used by certain molds, such as accordion.Default: null (no spacing).
-
setPanelSpacing
public void setPanelSpacing(java.lang.String panelSpacing)
Sets the spacing betweenTabpanel
. 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 interfaceComponent
- Overrides:
setMold
in classAbstractComponent
- 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 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 ofHtmlBasedComponent.getZclass()
. Once it is changed, the default style won't be applied at all. If you want to perform small adjustments, useHtmlBasedComponent.setSclass(java.lang.String)
instead.- Overrides:
getZclass
in classHtmlBasedComponent
- See Also:
HtmlBasedComponent.getSclass()
-
beforeChildAdded
public void beforeChildAdded(Component child, Component refChild)
Description copied from class:AbstractComponent
Default: does nothing.- Specified by:
beforeChildAdded
in interfaceComponentCtrl
- Overrides:
beforeChildAdded
in classAbstractComponent
- 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)
orComponent.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 backComponent.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)
and/orComponent.removeChild(org.zkoss.zk.ui.Component)
, whileComponent.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)
andComponent.removeChild(org.zkoss.zk.ui.Component)
always calls backComponent.setParent(org.zkoss.zk.ui.Component)
, if the parent is changed. Thus, you don't need to override bothComponent.insertBefore(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component)
andComponent.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 interfaceComponent
- Overrides:
insertBefore
in classAbstractComponent
- 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: handles special event listeners.- Specified by:
onChildRemoved
in interfaceComponentCtrl
- Overrides:
onChildRemoved
in classAbstractComponent
- 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 interfaceComponent
- Overrides:
clone
in classXulElement
- 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.- Overrides:
renderProperties
in classXulElement
- Throws:
java.io.IOException
-
onPageAttached
public void onPageAttached(Page newpage, Page oldpage)
Description copied from class:AbstractComponent
Default: handles special event listeners.- Specified by:
onPageAttached
in interfaceComponentCtrl
- Overrides:
onPageAttached
in classAbstractComponent
- Parameters:
newpage
- the new page (never null).oldpage
- the previous page, if any, or null if it didn't belong to any page.- See Also:
ComponentCtrl.onPageAttached(org.zkoss.zk.ui.Page, org.zkoss.zk.ui.Page)
-
onPageDetached
public void onPageDetached(Page page)
Description copied from class:AbstractComponent
Default: handles special event listeners.- Specified by:
onPageDetached
in interfaceComponentCtrl
- Overrides:
onPageDetached
in classAbstractComponent
- Parameters:
page
- the previous page (never null)- See Also:
ComponentCtrl.onPageDetached(org.zkoss.zk.ui.Page)
-
-