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(&quot;first tab&quot;)) {
- *                                
- *                                 public Panel getPanel(String panelId)
- *                                 {
- *                                 return new TabPanel1(panelId);
- *                                 }
- *                                 
- *                                 });
- *                                
- *                                 tabs.add(new AbstractTab(new 
Model(&quot;second tab&quot;)) {
+ * tabs.add(new AbstractTab(new Model(&quot;first tab&quot;)) {
+ * 
+ *   public Panel getPanel(String panelId)
+ *   {
+ *     return new TabPanel1(panelId);
+ *   }
+ *   
+ * });
  *                                
- *                                 public Panel getPanel(String panelId)
- *                                 {
- *                                 return new TabPanel2(panelId);
- *                                 }
+ * tabs.add(new AbstractTab(new Model(&quot;second tab&quot;)) {
+ * 
+ *   public Panel getPanel(String panelId)
+ *   {
+ *     return new TabPanel2(panelId);
+ *   }
  *                                 
- *                                 });
+ * });
  *                                
- *                                 add(new TabbedPanel(&quot;tabs&quot;, 
tabs));
- *                             
- *                                 
- *                                 &lt;span wicket:id=&quot;tabs&quot; 
class=&quot;tabpanel&quot;&gt;[tabbed panel will be here]&lt;/span&gt;
+ * add(new TabbedPanel(&quot;tabs&quot;, tabs));
+ * 
+ * 
+ * &lt;span wicket:id=&quot;tabs&quot; class=&quot;tabpanel&quot;&gt;[tabbed 
panel will be here]&lt;/span&gt;
  *                             
  * </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"), " "));
-                               }
-
+                               };
                        }
 
                });


Reply via email to