Class TabbedPanel<T extends ITab>
- java.lang.Object
-
- org.apache.wicket.Component
-
- org.apache.wicket.MarkupContainer
-
- org.apache.wicket.markup.html.WebMarkupContainer
-
- org.apache.wicket.markup.html.panel.Panel
-
- org.apache.wicket.extensions.markup.html.tabs.TabbedPanel<T>
-
- Type Parameters:
T
- The type of panel to be used for this component's tabs. Just useITab
if you have no special needs here.
- All Implemented Interfaces:
Serializable
,Iterable<Component>
,IEventSink
,IEventSource
,IFeedbackContributor
,IConverterLocator
,IMetadataContext<Serializable,Component>
,IQueueRegion
,IHeaderContributor
,IRequestableComponent
,IHierarchical<Component>
,IClusterable
- Direct Known Subclasses:
AjaxTabbedPanel
public class TabbedPanel<T extends ITab> extends Panel
TabbedPanel component represents a panel with tabs that are used to switch between different content panels inside the TabbedPanel panel.Note: When the currently selected tab is replaced by changing the underlying list of tabs, the change is not picked up unless a call is made to
setSelectedTab(int)
.Example:
List tabs=new ArrayList(); tabs.add(new AbstractTab(new Model<String>("first tab")) { public Panel getPanel(String panelId) { return new TabPanel1(panelId); } }); tabs.add(new AbstractTab(new Model<String>("second tab")) { public Panel getPanel(String panelId) { return new TabPanel2(panelId); } }); add(new TabbedPanel("tabs", tabs)); <span wicket:id="tabs" class="tabpanel">[tabbed panel will be here]</span>
For a complete example see the component references in wicket-examples project
- Author:
- Igor Vaynberg (ivaynberg at apache dot org)
- See Also:
ITab
, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static String
CONTAINER_CSS_CLASS_KEY
static String
LAST_CSS_CLASS_KEY
static String
SELECTED_CSS_CLASS_KEY
static String
TAB_PANEL_ID
id used for child panels-
Fields inherited from class org.apache.wicket.Component
ENABLE, FLAG_INITIALIZED, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED8, PARENT_PATH, PATH_SEPARATOR, RENDER, RFLAG_CONTAINER_DEQUEING, RFLAG_CONTAINER_HAS_REMOVALS
-
-
Constructor Summary
Constructors Constructor Description TabbedPanel(String id, List<T> tabs)
ConstructorTabbedPanel(String id, List<T> tabs, IModel<Integer> model)
Constructor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected String
getLastTabCssClass()
int
getSelectedTab()
protected String
getSelectedTabCssClass()
protected String
getTabContainerCssClass()
List<T>
getTabs()
protected IModel<?>
initModel()
Override of the default initModel behaviour.protected WebMarkupContainer
newLink(String linkId, int index)
Factory method for links used to switch between tabs.protected LoopItem
newTabContainer(int tabIndex)
Generates a loop item used to represent a specific tab'sli
element.protected WebMarkupContainer
newTabsContainer(String id)
Generates the container for all tabs.protected Component
newTitle(String titleId, IModel<?> titleModel, int index)
Factory method for tab titles.protected void
onBeforeRender()
Called on all visible components before any component is rendered.protected void
onDetach()
Called to allow a component to detach resources after use.TabbedPanel<T>
setSelectedTab(int index)
sets the selected tab-
Methods inherited from class org.apache.wicket.markup.html.panel.Panel
getRegionMarkup, newMarkupSourcingStrategy
-
Methods inherited from class org.apache.wicket.markup.html.WebMarkupContainer
getWebApplication, getWebPage, getWebRequest, getWebResponse, getWebSession
-
Methods inherited from class org.apache.wicket.MarkupContainer
add, addDequeuedComponent, addOrReplace, autoAdd, canDequeueTag, contains, dequeue, dequeue, dequeuePreamble, findChildComponent, findComponentToDequeue, get, getAssociatedMarkup, getAssociatedMarkupStream, getMarkup, getMarkupType, internalAdd, internalInitialize, iterator, iterator, newDequeueContext, onComponentTagBody, onInitialize, onRender, queue, remove, remove, removeAll, renderAll, renderAssociatedMarkup, renderAssociatedMarkup, renderNext, replace, setDefaultModel, size, stream, streamChildren, toString, toString, visitChildren, visitChildren
-
Methods inherited from class org.apache.wicket.Component
add, addStateChange, beforeRender, canCallListener, canCallListenerAfterExpiry, checkComponentTag, checkComponentTagAttribute, checkHierarchyChange, clearOriginalDestination, configure, continueToOriginalDestination, createConverter, debug, detach, detachModel, detachModels, determineVisibility, error, exceptionMessage, fatal, findMarkupStream, findPage, findParent, findParentWithAssociatedMarkup, getAjaxRegionMarkupId, getApplication, getBehaviorById, getBehaviorId, getBehaviors, getBehaviors, getClassRelativePath, getConverter, getDefaultModel, getDefaultModelObject, getDefaultModelObjectAsString, getDefaultModelObjectAsString, getEscapeModelStrings, getFeedbackMessages, getFlag, getId, getInnermostModel, getInnermostModel, getLocale, getLocalizer, getMarkup, getMarkupAttributes, getMarkupId, getMarkupId, getMarkupIdFromMarkup, getMarkupIdImpl, getMarkupSourcingStrategy, getMarkupTag, getMetaData, getModelComparator, getOutputMarkupId, getOutputMarkupPlaceholderTag, getPage, getPageRelativePath, getParent, getPath, getRenderBodyOnly, getRequest, getRequestCycle, getRequestFlag, getResponse, getSession, getSizeInBytes, getStatelessHint, getString, getString, getString, getStyle, getVariation, hasBeenRendered, hasErrorMessage, hasFeedbackMessage, info, internalOnModelChanged, internalRenderComponent, internalRenderHead, isActionAuthorized, isAuto, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isInitialized, isRenderAllowed, isRendering, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, markRendering, modelChanged, modelChanging, onAfterRender, onComponentTag, onConfigure, onEvent, onModelChanged, onModelChanging, onReAdd, onRemove, redirectToInterceptPage, remove, remove, render, renderComponentTag, rendered, renderHead, renderPart, renderPlaceholderTag, replaceComponentTagBody, replaceWith, sameInnermostModel, sameInnermostModel, send, setAuto, setDefaultModelObject, setEnabled, setEscapeModelStrings, setFlag, setIgnoreAttributeModifier, setMarkup, setMarkupId, setMarkupIdImpl, setMetaData, setOutputMarkupId, setOutputMarkupPlaceholderTag, setParent, setRenderBodyOnly, setResponsePage, setResponsePage, setResponsePage, setVersioned, setVisibilityAllowed, setVisible, success, urlFor, urlFor, urlFor, urlForListener, urlForListener, visitParents, visitParents, warn, wrap
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.wicket.IQueueRegion
dequeue, newDequeueContext
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Field Detail
-
TAB_PANEL_ID
public static final String TAB_PANEL_ID
id used for child panels- See Also:
- Constant Field Values
-
CONTAINER_CSS_CLASS_KEY
public static final String CONTAINER_CSS_CLASS_KEY
-
SELECTED_CSS_CLASS_KEY
public static final String SELECTED_CSS_CLASS_KEY
-
LAST_CSS_CLASS_KEY
public static final String LAST_CSS_CLASS_KEY
-
-
Constructor Detail
-
TabbedPanel
public TabbedPanel(String id, List<T> tabs)
Constructor- Parameters:
id
- component idtabs
- list of ITab objects used to represent tabs
-
-
Method Detail
-
initModel
protected IModel<?> initModel()
Override of the default initModel behaviour. This component will not use any compound model of a parent.- Overrides:
initModel
in classComponent
- Returns:
- The model
- See Also:
Component.initModel()
-
newTabsContainer
protected WebMarkupContainer newTabsContainer(String id)
Generates the container for all tabs. The default container automatically adds the cssclass
attribute based on the return value ofgetTabContainerCssClass()
- Parameters:
id
- container id- Returns:
- container
-
newTabContainer
protected LoopItem newTabContainer(int tabIndex)
Generates a loop item used to represent a specific tab'sli
element.- Parameters:
tabIndex
-- Returns:
- new loop item
-
onBeforeRender
protected void onBeforeRender()
Description copied from class:Component
Called on all visible components before any component is rendered.NOTE: If you override this, you *must* call super.onBeforeRender() within your implementation. Because this method is responsible for cascading
Changes to the component tree can be made only before calling super.onBeforeRender().Component.onBeforeRender()
call to its children it is strongly recommended that super call is made at the end of the override.- Overrides:
onBeforeRender
in classComponent
- See Also:
MarkupContainer.addOrReplace(Component...)
-
getTabContainerCssClass
protected String getTabContainerCssClass()
- Returns:
- the value of css class attribute that will be added to a div containing the tabs. The
default value is
tab-row
-
getLastTabCssClass
protected String getLastTabCssClass()
- Returns:
- the value of css class attribute that will be added to last tab. The default value is
last
-
getSelectedTabCssClass
protected String getSelectedTabCssClass()
- Returns:
- the value of css class attribute that will be added to selected tab. The default
value is
selected
-
getTabs
public final List<T> getTabs()
- Returns:
- list of tabs that can be used by the user to add/remove/reorder tabs in the panel
-
newTitle
protected Component newTitle(String titleId, IModel<?> titleModel, int index)
Factory method for tab titles. Returned component can be anything that can attach to span tags such as a fragment, panel, or a label- Parameters:
titleId
- id of title componenttitleModel
- model containing tab titleindex
- index of tab- Returns:
- title component
-
newLink
protected WebMarkupContainer newLink(String linkId, int index)
Factory method for links used to switch between tabs. The created component is attached to the following markup. Label component with id: title will be added for you by the tabbed panel.<a href="#" wicket:id="link"><span wicket:id="title">[[tab title]]</span></a>
Example implementation:protected WebMarkupContainer newLink(String linkId, final int index) { return new Link(linkId) { private static final long serialVersionUID = 1L; public void onClick() { setSelectedTab(index); } }; }
- Parameters:
linkId
- component id with which the link should be createdindex
- index of the tab that should be activated when this link is clicked. SeesetSelectedTab(int)
.- Returns:
- created link component
-
setSelectedTab
public TabbedPanel<T> setSelectedTab(int index)
sets the selected tab- Parameters:
index
- index of the tab to select- Returns:
- this for chaining
- Throws:
IndexOutOfBoundsException
- if index is not in the range of available tabs
-
getSelectedTab
public final int getSelectedTab()
- Returns:
- index of the selected tab
-
onDetach
protected void onDetach()
Description copied from class:Component
Called to allow a component to detach resources after use. Overrides of this method MUST call the super implementation, the most logical place to do this is the last line of the override method.- Overrides:
onDetach
in classMarkupContainer
-
-