org.apache.wicket.extensions.markup.html.tabs
Class TabbedPanel<T extends ITab>

java.lang.Object
  extended by org.apache.wicket.Component
      extended by org.apache.wicket.MarkupContainer
          extended by org.apache.wicket.markup.html.WebMarkupContainer
              extended by org.apache.wicket.markup.html.panel.Panel
                  extended by 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 use ITab if you have no special needs here.
All Implemented Interfaces:
Serializable, Iterable<Component>, IEventSink, IEventSource, IConverterLocator, IHeaderContributor, IRequestableComponent, org.apache.wicket.util.IHierarchical<Component>, org.apache.wicket.util.io.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
static String TAB_PANEL_ID
          id used for child panels
 
Fields inherited from class org.apache.wicket.markup.html.panel.Panel
PANEL
 
Fields inherited from class org.apache.wicket.Component
ENABLE, FLAG_INITIALIZED, FLAG_REMOVING_FROM_HIERARCHY, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED8, PARENT_PATH, PATH_SEPARATOR, RENDER
 
Constructor Summary
TabbedPanel(String id, List<T> tabs)
          Constructor
TabbedPanel(String id, List<T> tabs, IModel<Integer> model)
          Constructor
 
Method Summary
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's li 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()
           
protected  void onDetach()
           
 TabbedPanel<T> setSelectedTab(int index)
          sets the selected tab
 
Methods inherited from class org.apache.wicket.markup.html.panel.Panel
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, addOrReplace, autoAdd, contains, get, get, getAssociatedMarkup, getAssociatedMarkupStream, getMarkup, getMarkupType, internalAdd, internalInitialize, iterator, iterator, onAfterRenderChildren, onComponentTagBody, onRender, remove, remove, removeAll, renderAll, renderAssociatedMarkup, renderNext, replace, setDefaultModel, size, swap, toString, toString, visitChildren, visitChildren, visitChildren, visitChildren
 
Methods inherited from class org.apache.wicket.Component
add, addStateChange, afterRender, beforeRender, canCallListenerInterface, checkComponentTag, checkComponentTagAttribute, checkHierarchyChange, clearOriginalDestination, configure, continueToOriginalDestination, 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, 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, internalPrepareForRender, internalRenderComponent, isActionAuthorized, isAuto, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isRenderAllowed, isRendering, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, markRendering, modelChanged, modelChanging, onAfterRender, onComponentTag, onConfigure, onEvent, onInitialize, onModelChanged, onModelChanging, onReAdd, onRemove, prepareForRender, redirectToInterceptPage, remove, remove, render, renderComponentTag, rendered, renderHead, renderHead, renderHead, renderPlaceholderTag, replaceComponentTagBody, replaceWith, sameInnermostModel, sameInnermostModel, send, setAuto, setDefaultModelObject, setEnabled, setEscapeModelStrings, setFlag, setIgnoreAttributeModifier, setMarkup, setMarkupId, setMarkupIdImpl, setMetaData, setOutputMarkupId, setOutputMarkupPlaceholderTag, setParent, setRenderBodyOnly, setRequestFlag, setResponsePage, setResponsePage, setResponsePage, setVersioned, setVisibilityAllowed, setVisible, success, urlFor, urlFor, urlFor, urlFor, urlFor, visitParents, visitParents, warn, wrap
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

TAB_PANEL_ID

public static final String TAB_PANEL_ID
id used for child panels

See Also:
Constant Field Values
Constructor Detail

TabbedPanel

public TabbedPanel(String id,
                   List<T> tabs)
Constructor

Parameters:
id - component id
tabs - list of ITab objects used to represent tabs

TabbedPanel

public TabbedPanel(String id,
                   List<T> tabs,
                   IModel<Integer> model)
Constructor

Parameters:
id - component id
tabs - list of ITab objects used to represent tabs
model - model holding the index of the selected tab
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 class Component
See Also:
Component.initModel()

newTabsContainer

protected WebMarkupContainer newTabsContainer(String id)
Generates the container for all tabs. The default container automatically adds the css class attribute based on the return value of getTabContainerCssClass()

Parameters:
id - container id
Returns:
container

newTabContainer

protected LoopItem newTabContainer(int tabIndex)
Generates a loop item used to represent a specific tab's li element.

Parameters:
tabIndex -
Returns:
new loop item

onBeforeRender

protected void onBeforeRender()
Overrides:
onBeforeRender in class 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 component
titleModel - model containing tab title
index - 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 created
index - index of the tab that should be activated when this link is clicked. See setSelectedTab(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()
Overrides:
onDetach in class Component


Copyright © 2006–2020 Apache Software Foundation. All rights reserved.