Class TabbedPanel<T extends ITab>

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, 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:
  • Field Details

  • Constructor Details

    • 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 Details

    • 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
      Returns:
      The model
      See Also:
    • newTabsContainer

      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()
      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 Component.onBeforeRender() call to its children it is strongly recommended that super call is made at the end of the override.

      Changes to the component tree can be made only before calling super.onBeforeRender().
      Overrides:
      onBeforeRender in class Component
      See Also:
    • 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

      Returns:
      the value of css class attribute that will be added to last tab. The default value is last
    • 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()
      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 class MarkupContainer