Author: ivaynberg Date: Tue Jul 10 12:31:05 2007 New Revision: 555051 URL: http://svn.apache.org/viewvc?view=rev&rev=555051 Log: patch to add tab0, tab1 css classes. optimized state by not using attribute modifiers.
Modified: incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanel.java Modified: incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanel.java URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanel.java?view=diff&rev=555051&r1=555050&r2=555051 ============================================================================== --- incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanel.java (original) +++ incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tabs/TabbedPanel.java Tue Jul 10 12:31:05 2007 @@ -20,8 +20,6 @@ import org.apache.wicket.Component; import org.apache.wicket.WicketRuntimeException; -import org.apache.wicket.behavior.AttributeAppender; -import org.apache.wicket.behavior.SimpleAttributeModifier; import org.apache.wicket.markup.ComponentTag; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; @@ -41,30 +39,30 @@ * * <pre> * - * List tabs=new ArrayList(); + * List tabs=new ArrayList(); * - * tabs.add(new AbstractTab(new Model("first tab")) { - * - * public Panel getPanel(String panelId) - * { - * return new TabPanel1(panelId); - * } - * - * }); - * - * tabs.add(new AbstractTab(new Model("second tab")) { + * tabs.add(new AbstractTab(new Model("first tab")) { + * + * public Panel getPanel(String panelId) + * { + * return new TabPanel1(panelId); + * } + * + * }); * - * public Panel getPanel(String panelId) - * { - * return new TabPanel2(panelId); - * } + * tabs.add(new AbstractTab(new Model("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> + * add(new TabbedPanel("tabs", tabs)); + * + * + * <span wicket:id="tabs" class="tabpanel">[tabbed panel will be here]</span> * * </pre> * @@ -77,7 +75,7 @@ * * @see org.apache.wicket.extensions.markup.html.tabs.ITab * - * @author Igor Vaynberg (ivaynberg) + * @author Igor Vaynberg (ivaynberg at apache dot org) * */ public class TabbedPanel extends Panel @@ -154,22 +152,36 @@ titleLink.add(newTitle("title", tab.getTitle(), index)); item.add(titleLink); + } - item.add(new SimpleAttributeModifier("class", "selected") + protected LoopItem newItem(int iteration) + { + return new LoopItem(iteration) { private static final long serialVersionUID = 1L; - public boolean isEnabled(Component component) + protected void onComponentTag(ComponentTag tag) { - return index == selected; + super.onComponentTag(tag); + String cssClass = (String)tag.getString("class"); + if (cssClass == null) + { + cssClass = " "; + } + cssClass += " tab" + getIteration(); + + if (getIteration() == getSelectedTab()) + { + cssClass += " selected"; + } + if (getIteration() == getIterations() - 1) + { + cssClass += " last"; + } + tag.put("class", cssClass.trim()); } - }); - if (item.getIteration() == getIterations() - 1) - { - item.add(new AttributeAppender("class", true, new Model("last"), " ")); - } - + }; } });