You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@click.apache.org by sa...@apache.org on 2010/05/01 19:33:14 UTC

svn commit: r940088 - in /click/trunk/click/extras: src/org/apache/click/extras/panel/TabbedPanel.java test/org/apache/click/extras/panel/TabbedPanelTest.java

Author: sabob
Date: Sat May  1 17:33:14 2010
New Revision: 940088

URL: http://svn.apache.org/viewvc?rev=940088&view=rev
Log:
fix tests. CLK-666

Modified:
    click/trunk/click/extras/src/org/apache/click/extras/panel/TabbedPanel.java
    click/trunk/click/extras/test/org/apache/click/extras/panel/TabbedPanelTest.java

Modified: click/trunk/click/extras/src/org/apache/click/extras/panel/TabbedPanel.java
URL: http://svn.apache.org/viewvc/click/trunk/click/extras/src/org/apache/click/extras/panel/TabbedPanel.java?rev=940088&r1=940087&r2=940088&view=diff
==============================================================================
--- click/trunk/click/extras/src/org/apache/click/extras/panel/TabbedPanel.java (original)
+++ click/trunk/click/extras/src/org/apache/click/extras/panel/TabbedPanel.java Sat May  1 17:33:14 2010
@@ -209,12 +209,19 @@ public class TabbedPanel extends Panel {
      */
     @Override
     public Control insert(Control control, int index) {
+        Panel panel = null;
+        if (control instanceof Panel) {
+            panel = (Panel) control;
+            panel.setActive(false);
+        }
+
         super.insert(control, index);
 
-        if (control instanceof Panel && getPanels().size() == 1) {
-            setActivePanel((Panel) control);
+        if (panel != null) {
+            if (getPanels().size() == 1) {
+                setActivePanel(panel);
+            }
         }
-
         return control;
     }
 
@@ -234,8 +241,11 @@ public class TabbedPanel extends Panel {
     public Control replace(Control currentControl, Control newControl) {
         super.replace(currentControl, newControl);
 
-        if (newControl instanceof Panel && getPanels().size() == 1) {
-            setActivePanel((Panel) newControl);
+        if (currentControl instanceof Panel) {
+            Panel currentPanel = (Panel) currentControl;
+            if (currentPanel == getActivePanel()) {
+                setActivePanel((Panel) newControl);
+            }
         }
         return newControl;
     }

Modified: click/trunk/click/extras/test/org/apache/click/extras/panel/TabbedPanelTest.java
URL: http://svn.apache.org/viewvc/click/trunk/click/extras/test/org/apache/click/extras/panel/TabbedPanelTest.java?rev=940088&r1=940087&r2=940088&view=diff
==============================================================================
--- click/trunk/click/extras/test/org/apache/click/extras/panel/TabbedPanelTest.java (original)
+++ click/trunk/click/extras/test/org/apache/click/extras/panel/TabbedPanelTest.java Sat May  1 17:33:14 2010
@@ -22,6 +22,7 @@ import junit.framework.TestCase;
 import org.apache.click.ActionListener;
 import org.apache.click.Control;
 import org.apache.click.MockContext;
+import org.apache.click.Page;
 import org.apache.click.control.ActionLink;
 import org.apache.click.control.Panel;
 
@@ -35,18 +36,18 @@ public class TabbedPanelTest extends Tes
         tabbedPanel.add(new Panel("panel2"));
         tabbedPanel.onInit();
         String activePanelName = tabbedPanel.getActivePanel().getName();
-        
+
         // By default panel1 should be the active panel
         assertEquals("panel1", activePanelName);
     }
-    
+
     /**
      * Test that the request parameter <tt>tabPanelIndex</tt> sets the new
      * active panel correctly.
      */
     public void testTabPanelIndexParameter() {
         MockContext context = MockContext.initContext();
-        
+
         // Since tabbedPanel is zero index based, setting tabPanelIndex to 1
         // should set the active panel to panel2
         context.getMockRequest().setParameter("tabPanelIndex", "1");
@@ -56,17 +57,17 @@ public class TabbedPanelTest extends Tes
         tabbedPanel.add(new Panel("panel2"));
         tabbedPanel.onInit();
         String activePanelName = tabbedPanel.getActivePanel().getName();
-        
+
         // By default panel2 should be the active panel
         assertEquals("panel2", activePanelName);
     }
-    
+
     /**
      * Test that if user selects panel2, panel2 becomes the active panel.
      */
     public void testTabLinkClicked() {
         MockContext context = MockContext.initContext();
-        
+
         // Simulate user selecting panel2
         context.getMockRequest().setParameter(ActionLink.ACTION_LINK, "tabLink");
         context.getMockRequest().setParameter(ActionLink.VALUE, "panel2");
@@ -76,11 +77,11 @@ public class TabbedPanelTest extends Tes
         tabbedPanel.add(new Panel("panel2"));
         tabbedPanel.onInit();
         String activePanelName = tabbedPanel.getActivePanel().getName();
-        
+
         // By default panel2 should be the active panel
         assertEquals("panel2", activePanelName);
     }
-    
+
     /**
      * Test that registered tab listener is fired.
      *
@@ -111,4 +112,50 @@ public class TabbedPanelTest extends Tes
         // If tab listener was triggered the actionResult should be false
         assertFalse(actionResult);
     }
+
+    /**
+     * Check that adding controls replace existing controls with the same name.
+     *
+     * CLK-666
+     */
+    public void testReplace() {
+        MockContext.initContext();
+
+        Page page = new Page();
+        TabbedPanel panel = new TabbedPanel("panel");
+        page.addControl(panel);
+
+        // Add two panels named child1 and child2
+        Panel child1 = new Panel("child1");
+        Panel child2 = new Panel("child2");
+        panel.add(child1);
+        panel.add(child2);
+
+        // Execute onInit event
+        panel.onInit();
+
+        assertEquals(3, panel.getControlMap().size());
+        assertEquals(3, panel.getControls().size());
+        assertSame(child1, panel.getControls().get(1));
+        assertSame(child2, panel.getControls().get(2));
+        assertSame(child1, panel.getPanels().get(0));
+        assertSame(child2, panel.getPanels().get(1));
+        assertTrue(child1.isActive());
+        assertFalse(child2.isActive());
+
+        // Add another two panels named child1 and child2 and test that these
+        // panels replaces the previous panels
+        child1 = new Panel("child1");
+        child2 = new Panel("child2");
+        panel.add(child1);
+        panel.add(child2);
+        assertEquals(3, panel.getControlMap().size());
+        assertEquals(3, panel.getControls().size());
+        assertSame(child1, panel.getControls().get(1));
+        assertSame(child2, panel.getControls().get(2));
+        assertSame(child1, panel.getPanels().get(0));
+        assertSame(child2, panel.getPanels().get(1));
+        assertTrue(child1.isActive());
+        assertFalse(child2.isActive());
+    }
 }