[richfaces-svn-commits] JBoss Rich Faces SVN: r2204 - in trunk/ui/tabPanel/src: main/java/org/richfaces/renderkit and 1 other directories.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Fri Aug 10 12:13:35 EDT 2007


Author: nbelaevski
Date: 2007-08-10 12:13:35 -0400 (Fri, 10 Aug 2007)
New Revision: 2204

Modified:
   trunk/ui/tabPanel/src/main/java/org/richfaces/component/UITab.java
   trunk/ui/tabPanel/src/main/java/org/richfaces/component/UITabPanel.java
   trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabHeaderRendererBase.java
   trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabPanelRendererBase.java
   trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabRendererBase.java
   trunk/ui/tabPanel/src/test/java/org/richfaces/component/UITabPanelTest.java
   trunk/ui/tabPanel/src/test/java/org/richfaces/component/UITabTest.java
Log:
http://jira.jboss.com/jira/browse/RF-560 fix for JSF 1.2

Modified: trunk/ui/tabPanel/src/main/java/org/richfaces/component/UITab.java
===================================================================
--- trunk/ui/tabPanel/src/main/java/org/richfaces/component/UITab.java	2007-08-10 16:11:08 UTC (rev 2203)
+++ trunk/ui/tabPanel/src/main/java/org/richfaces/component/UITab.java	2007-08-10 16:13:35 UTC (rev 2204)
@@ -21,19 +21,19 @@
 
 package org.richfaces.component;
 
-import org.ajax4jsf.component.AjaxActionComponent;
-import org.ajax4jsf.component.AjaxComponent;
-import org.ajax4jsf.event.AjaxSource;
-import org.ajax4jsf.renderkit.AjaxRendererUtils;
+import java.io.IOException;
 
 import javax.faces.FacesException;
 import javax.faces.component.ActionSource;
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
-import javax.faces.el.ValueBinding;
 import javax.faces.render.Renderer;
-import java.io.IOException;
 
+import org.ajax4jsf.component.AjaxActionComponent;
+import org.ajax4jsf.component.AjaxComponent;
+import org.ajax4jsf.event.AjaxSource;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
+
 /**
  * Base class for panel tab.
  *
@@ -47,8 +47,6 @@
 
     private transient boolean _active = false;
 
-    private String switchType;
-
     /**
      * @param context
      * @param active
@@ -146,45 +144,22 @@
     /*	public abstract String getDescription();
      public abstract void setDescription(String newvalue);*/
 
-    public String getSwitchType() {
-        if (this.switchType != null) {
-            return this.switchType;
-        }
-
-        ValueBinding valueBinding = getValueBinding("switchType");
-        if (valueBinding != null) {
-            return (String) valueBinding.getValue(
-                    FacesContext.getCurrentInstance());
-        }
-
-        UITabPanel pane = getPane();
-        if (pane != null) {
-            return getPane().getSwitchType();
-        }
-
+    public String getSwitchTypeOrDefault() {
+    	String switchType = getSwitchType();
+    	if (switchType == null) {
+    		switchType = getPane().getSwitchType();
+    	}
+    	
+    	if (switchType != null) {
+    		return switchType;
+    	}
+    	
         return UISwitchablePanel.DEFAULT_METHOD;
     }
+    
+    public abstract String getSwitchType();
+    public abstract void setSwitchType(String newvalue);
 
-    public void setSwitchType(String newvalue) {
-        this.switchType = newvalue;
-    }
-
-    public Object saveState(FacesContext context) {
-        Object[] state = new Object[2];
-        state[0] = super.saveState(context);
-
-        state[1] = switchType;
-
-        return state;
-    }
-
-    public void restoreState(FacesContext context, Object object) {
-        Object[] state = (Object[]) object;
-        super.restoreState(context, state[0]);
-
-        this.switchType = (String) state[1];
-    }
-
     //TODO - nick - ?
 //	public void processDecodes(FacesContext context) {
 //

Modified: trunk/ui/tabPanel/src/main/java/org/richfaces/component/UITabPanel.java
===================================================================
--- trunk/ui/tabPanel/src/main/java/org/richfaces/component/UITabPanel.java	2007-08-10 16:11:08 UTC (rev 2203)
+++ trunk/ui/tabPanel/src/main/java/org/richfaces/component/UITabPanel.java	2007-08-10 16:13:35 UTC (rev 2204)
@@ -43,7 +43,7 @@
         return new TabsIterator(this, new TabsIterator.FilterCondition() {
 
             public boolean isSuitable(UITab tab) {
-                if (CLIENT_METHOD.equals(tab.getSwitchType())) {
+                if (CLIENT_METHOD.equals(tab.getSwitchTypeOrDefault())) {
 
                     return true;
                 }
@@ -82,9 +82,19 @@
     		return selectedTab;
     	}
 
+    	Object localValue = getLocalValue();
+    	if (localValue != null) {
+    		return localValue;
+    	}
+    	
     	//do not use VB for selectedTab here, because it'll be returned for "value" VB queue
     	//see UITabPanel#getValueBinding(String) for more
-    	return super.getValue();
+    	ValueBinding vb = getValueBinding("value");
+    	if (vb != null) {
+    		return vb.getValue(getFacesContext());
+    	}
+    	
+    	return null;
     }
     
     public void setValue(Object value) {

Modified: trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabHeaderRendererBase.java
===================================================================
--- trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabHeaderRendererBase.java	2007-08-10 16:11:08 UTC (rev 2203)
+++ trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabHeaderRendererBase.java	2007-08-10 16:13:35 UTC (rev 2204)
@@ -54,7 +54,7 @@
 
         boolean disabled = tab.isDisabled();
         UITabPanel pane = tab.getPane();
-        String method = tab.getSwitchType();
+        String method = tab.getSwitchTypeOrDefault();
         boolean ajax = UISwitchablePanel.AJAX_METHOD.equals(method);
         boolean clientSide = UISwitchablePanel.CLIENT_METHOD.equals(method);
         String label = tab.getLabel();

Modified: trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabPanelRendererBase.java
===================================================================
--- trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabPanelRendererBase.java	2007-08-10 16:11:08 UTC (rev 2203)
+++ trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabPanelRendererBase.java	2007-08-10 16:13:35 UTC (rev 2204)
@@ -21,6 +21,16 @@
 
 package org.richfaces.renderkit;
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+
 import org.ajax4jsf.event.AjaxEvent;
 import org.ajax4jsf.javascript.JSReference;
 import org.ajax4jsf.javascript.ScriptUtils;
@@ -34,16 +44,7 @@
 import org.richfaces.component.util.HtmlUtil;
 import org.richfaces.event.SwitchablePanelSwitchEvent;
 
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.event.ActionEvent;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
 
-
 /**
  * @author Nick Belaevski - nbelaevski at exadel.com
  *         created 12.01.2007
@@ -89,7 +90,7 @@
             new SwitchablePanelSwitchEvent(panel, null, eventTab).queue();
             new ActionEvent(eventTab).queue();
 
-            if (UISwitchablePanel.AJAX_METHOD.equals(eventTab.getSwitchType()))
+            if (UISwitchablePanel.AJAX_METHOD.equals(eventTab.getSwitchTypeOrDefault()))
             {
                 new AjaxEvent(eventTab).queue();
             }
@@ -226,10 +227,7 @@
     public void encodeTabs(FacesContext context, UITabPanel tabPanel) throws IOException {
         ComponentVariables componentVariables = ComponentsVariableResolver.getVariables(this, tabPanel);
 
-        Object checkedValue = checkValue(tabPanel.getSelectedTab());
-        if (checkedValue == null) {
-        	checkedValue = checkValue(tabPanel.getValue());
-        }
+        Object checkedValue = checkValue(tabPanel.getValue());
 
         boolean useFirstRenderedTab = checkedValue == null;
         UITabPanel pane = tabPanel;
@@ -286,7 +284,7 @@
 
             if (tab.isRendered()) {
                 if (!clientSide) {
-                    clientSide = UISwitchablePanel.CLIENT_METHOD.equals(tab.getSwitchType());
+                    clientSide = UISwitchablePanel.CLIENT_METHOD.equals(tab.getSwitchTypeOrDefault());
                 }
 
                 tab.encodeTab(context, active);

Modified: trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabRendererBase.java
===================================================================
--- trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabRendererBase.java	2007-08-10 16:11:08 UTC (rev 2203)
+++ trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabRendererBase.java	2007-08-10 16:13:35 UTC (rev 2204)
@@ -83,7 +83,7 @@
     }
 
     protected boolean shouldRenderTab(UITab tab) {
-        String method = tab.getSwitchType();
+        String method = tab.getSwitchTypeOrDefault();
         return (tab.isActive() || UISwitchablePanel.CLIENT_METHOD.equals(method));
     }
 

Modified: trunk/ui/tabPanel/src/test/java/org/richfaces/component/UITabPanelTest.java
===================================================================
--- trunk/ui/tabPanel/src/test/java/org/richfaces/component/UITabPanelTest.java	2007-08-10 16:11:08 UTC (rev 2203)
+++ trunk/ui/tabPanel/src/test/java/org/richfaces/component/UITabPanelTest.java	2007-08-10 16:13:35 UTC (rev 2204)
@@ -102,7 +102,9 @@
         tab3.setSwitchType(UISwitchablePanel.SERVER_METHOD);
 
         tabPanel.setRenderedValue(tab3.getName());
-
+        Object state = tabPanel.saveState(facesContext);
+        tabPanel.restoreState(facesContext, state);
+        
         Iterator it = tabPanel.getSwitchedFacetsAndChildren();
         assertEquals(tab3.getId(), ((UITab)it.next()).getId());
     }

Modified: trunk/ui/tabPanel/src/test/java/org/richfaces/component/UITabTest.java
===================================================================
--- trunk/ui/tabPanel/src/test/java/org/richfaces/component/UITabTest.java	2007-08-10 16:11:08 UTC (rev 2203)
+++ trunk/ui/tabPanel/src/test/java/org/richfaces/component/UITabTest.java	2007-08-10 16:13:35 UTC (rev 2204)
@@ -21,13 +21,14 @@
 
 package org.richfaces.component;
 
-import org.ajax4jsf.tests.AbstractAjax4JsfTestCase;
-
+import javax.faces.FacesException;
 import javax.faces.component.UIForm;
 import javax.faces.component.html.HtmlForm;
 import javax.faces.context.FacesContext;
 import javax.faces.render.Renderer;
 
+import org.ajax4jsf.tests.AbstractAjax4JsfTestCase;
+
 /**
  * Unit test for UITab.
  */
@@ -75,15 +76,27 @@
     }
 
     public void testGetPane1() throws Exception {
-        assertNull(tab.getPane());
+        try {
+        	tab.getPane();
+        	
+        	fail();
+        } catch (FacesException e) {
 
+		}
+
         tabPanel.getChildren().add(tab);
         assertTrue(tab.getPane() instanceof UITabPanel);
     }
 
     public void testGetPane2() throws Exception {
-        assertNull(tab.getPane());
+        try {
+        	tab.getPane();
+        	
+        	fail();
+        } catch (FacesException e) {
 
+		}
+
         form.getChildren().add(tab);
 
         try {
@@ -248,5 +261,12 @@
 
 		public void setFocus(String arg0) {
 		}
+
+		public String getSwitchType() {
+			return null;
+		}
+
+		public void setSwitchType(String newvalue) {
+		}
     }
 }




More information about the richfaces-svn-commits mailing list