What if you use two different tabbed panels on the same page?

On Tue, Mar 10, 2009 at 8:27 AM, Christian Helmbold
<christian.helmb...@yahoo.de> wrote:
>
>> Since others seem to need it, this might be worth refining over on 
>> wicket-stuff.
>
> I think it's worth to build a universal bookmarkable tabbed panel. Brill, 
> please post your solution so we can look what is better in your or in my 
> solution and built the ultimative BookmarkableTabbedPanel.
>
> I refined my first version a bit and added the following features:
> * Reliable handling of user input (tab number).
> * Possibility to mix bookmarkable and stateful links.
> * Parameter name to distinguish tabs is now the component id by default. This 
> will avoid conflicts with multiple BookmarkableTabbedPanels.
>
> But I'm not sure if mixing bookmarkable and stateful links is a good idea.
>
> Current version:
> -----------------------------------------------------------------------------------------------------------
> package com.helmbold.wicket.components;
>
> import java.util.ArrayList;
> import java.util.List;
> import org.apache.wicket.PageParameters;
> import org.apache.wicket.extensions.markup.html.tabs.ITab;
> import org.apache.wicket.extensions.markup.html.tabs.TabbedPanel;
> import org.apache.wicket.markup.html.WebMarkupContainer;
> import org.apache.wicket.markup.html.link..BookmarkablePageLink;
>
>
> public class BookmarkableTabbedPanel extends TabbedPanel
> {
>
>    private PageParameters pageParameters;
>    private String tabParameterName;
>    private int defaultTabIndex = 0;
>  private List unbookmarkableTabIndex = new ArrayList();
>
>
>  /**
>   * Using this constructor the following defaults take effect:
>   * <ul>
>   *    <li>tabParameterName = component id</li>
>   *    <li>defaultTabIndex = 0</li>
>   * </ul>
>     * @param id component id
>     * @param tabs list of ITab objects used to represent tabs
>   * @param pageParameters Container for parameters to a requested page. A
>   * parameter for the selected tab will be inserted.
>     */
>  public BookmarkableTabbedPanel(
>          String id,
>          List<ITab> tabs,
>          PageParameters pageParameters)
>  {
>    super(id, tabs);
>    this.pageParameters = pageParameters;
>    this.tabParameterName = id;
>
>    if (pageParameters.containsKey(tabParameterName))
>    {
>      String tab = pageParameters.getString(tabParameterName);
>      try
>      {
>        setSelectedTab(Integer.parseInt(tab));
>      }
>      catch (NumberFormatException e)
>      {
>        setSelectedTab(defaultTabIndex);
>      }
>    }
>    else
>      setSelectedTab(defaultTabIndex);
>  }
>
>
>    /**
>     * @param id component id
>     * @param tabs list of ITab objects used to represent tabs
>     * @param defaultTabIndex Set the tab to by displayed by default. The url
>     * for this tab will not contain any tab specific information. If you want 
> to
>     * display the first tab by default, you can use the constructor without 
> this
>     * parameter.
>   * @param pageParameters Container for parameters to a requested page. A
>   * parameter for the selected tab will be inserted.
>     */
>    public BookmarkableTabbedPanel(
>        String id,
>        List<ITab> tabs,
>        int defaultTabIndex,
>        String tabParameterName,
>    PageParameters pageParameters,
>    int ...unbookmarkableTabIndex)
>    {
>        this(id, tabs, pageParameters);
>        this.defaultTabIndex = defaultTabIndex;
>        setSelectedTab(defaultTabIndex);
>        this.tabParameterName = tabParameterName;
>    for(int element : unbookmarkableTabIndex)
>      this.unbookmarkableTabIndex.add(element);
>    }
>
>
>   �...@override
>  protected WebMarkupContainer newLink(String linkId, int index)
>  {
>    WebMarkupContainer link;
>
>    // create default (not bookmarkable) links for the specified tabs.
>    if (unbookmarkableTabIndex.contains(index))
>      link = super.newLink(linkId, index);
>    // create bookmarkable links
>    else
>    {
>      if (index == defaultTabIndex)
>        pageParameters.remove(tabParameterName);
>      else
>        pageParameters.put(tabParameterName, "" + index);
>      link = new BookmarkablePageLink(
>              linkId, getPage().getClass(), pageParameters);
>    }
>
>    if (index == getSelectedTab())
>      link.setEnabled(false);
>
>    return link;
>  }
>
> }
> -----------------------------------------------------------------------------------------------------------
>
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to