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

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Thu Aug 23 13:09:18 EDT 2007


Author: nbelaevski
Date: 2007-08-23 13:09:18 -0400 (Thu, 23 Aug 2007)
New Revision: 2448

Added:
   trunk/ui/tabPanel/src/main/java/org/richfaces/taglib/
   trunk/ui/tabPanel/src/main/java/org/richfaces/taglib/TabPanelTagBase.java
   trunk/ui/tabPanel/src/main/java/org/richfaces/taglib/TabPanelTagHandlerBase.java
Modified:
   trunk/ui/tabPanel/src/main/config/component/tabPanel.xml
   trunk/ui/tabPanel/src/main/java/org/richfaces/component/UITabPanel.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/main/resources/org/richfaces/renderkit/html/scripts/tabPanel.js
Log:
http://jira.jboss.com/jira/browse/RF-662 fixed

Modified: trunk/ui/tabPanel/src/main/config/component/tabPanel.xml
===================================================================
--- trunk/ui/tabPanel/src/main/config/component/tabPanel.xml	2007-08-23 16:07:41 UTC (rev 2447)
+++ trunk/ui/tabPanel/src/main/config/component/tabPanel.xml	2007-08-23 17:09:18 UTC (rev 2448)
@@ -24,10 +24,12 @@
 		<tag>
 			<name>tabPanel</name>
 			<classname>org.richfaces.taglib.TabPanelTag</classname>
-			<superclass>
-				org.ajax4jsf.webapp.taglib.HtmlComponentTagBase
-			</superclass>
+			<superclass>org.richfaces.taglib.TabPanelTagBase</superclass>
 		</tag>
+		<taghandler generate="true">
+			<classname>org.richfaces.taglib.TabPanelTagHandler</classname>
+			<superclass>org.richfaces.taglib.TabPanelTagHandlerBase</superclass>
+		</taghandler>
 	    <property>
 	    	<name>converterMessage</name>
 	    	<classname>java.lang.String</classname>
@@ -77,7 +79,7 @@
 	    	<classname>java.lang.String</classname>
 	      	<description>A CSS class to be applied to all tabs</description>
 	    </property>
-		<property>
+		<property exist="true" existintag="true">
 			<name>selectedTab</name>
 			<classname>java.lang.Object</classname>
 			<description>Attribute defines name of selected tab</description>

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-23 16:07:41 UTC (rev 2447)
+++ trunk/ui/tabPanel/src/main/java/org/richfaces/component/UITabPanel.java	2007-08-23 17:09:18 UTC (rev 2448)
@@ -25,7 +25,6 @@
 
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
-import javax.faces.el.ValueBinding;
 
 /**
  * JSF component class
@@ -64,37 +63,12 @@
         return ((UITab) component).getName();
     }
 
-    public ValueBinding getValueBinding(String name) {
-    	if ("value".equals(name)) {
-    		ValueBinding binding = super.getValueBinding("selectedTab");
-    		if (binding == null) {
-    			binding = super.getValueBinding(name);
-    		}
-    		
-    		return binding;
-    	} else {
-        	return super.getValueBinding(name);
-    	}
-    }
-    
     public Object getValue() {
-    	if (selectedTab != null) {
-    		return selectedTab;
+    	if (renderedValue != null) {
+    		return renderedValue;
     	}
-
-    	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
-    	ValueBinding vb = getValueBinding("value");
-    	if (vb != null) {
-    		return vb.getValue(getFacesContext());
-    	}
-    	
-    	return null;
+    	return super.getValue();
     }
     
     public void setValue(Object value) {
@@ -107,7 +81,7 @@
      * @return selectedTab value from local variable or value bindings
      */
     public Object getSelectedTab() {
-		return selectedTab;
+		return getValue();
     }
 
     /**
@@ -116,14 +90,10 @@
      * @param tab
      */
     public void setSelectedTab(Object tab) {
-    	this.selectedTab = tab;
+    	setValue(tab);
     }
 
     public Object getRenderedValue() {
-    	if (renderedValue != null) {
-    		return renderedValue;
-    	}
-
     	return getValue();
     }
     
@@ -131,24 +101,14 @@
 		this.renderedValue = renderedValue;
 	}
     
-    private Object selectedTab;
     private Object renderedValue;
     
-    public void setLocalValueSet(boolean localValueSet) {
-    	//dumb hack to know that we've just update "value" vb
-    	if (!localValueSet) {
-    		this.selectedTab = null;
-    	}
-    	super.setLocalValueSet(localValueSet);
-    }
-    
     private transient Object restoredRenderedValue;
     
     public Object saveState(FacesContext context) {
-    	Object[] state = new Object[3];
+    	Object[] state = new Object[2];
     	state[0] = super.saveState(context);
-    	state[1] = selectedTab;
-    	state[2] = renderedValue;
+    	state[1] = renderedValue;
     	
     	return state;
     }
@@ -156,8 +116,7 @@
     public void restoreState(FacesContext context, Object state) {
     	Object[] states = (Object[]) state;
     	super.restoreState(context, states[0]);
-    	this.selectedTab = states[1];
-    	this.renderedValue = states[2];
+    	this.renderedValue = states[1];
     	this.restoredRenderedValue = getRenderedValue();
     }
     

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-23 16:07:41 UTC (rev 2447)
+++ trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabPanelRendererBase.java	2007-08-23 17:09:18 UTC (rev 2448)
@@ -227,6 +227,7 @@
     public void encodeTabs(FacesContext context, UITabPanel tabPanel) throws IOException {
         ComponentVariables componentVariables = ComponentsVariableResolver.getVariables(this, tabPanel);
 
+        tabPanel.setRenderedValue(null);
         Object checkedValue = checkValue(tabPanel.getValue());
 
         boolean useFirstRenderedTab = checkedValue == null;
@@ -238,7 +239,7 @@
         {
             UITab tab = (UITab) iter.next();
 
-            if (tab.isRendered()) {
+            if (tab.isRendered() && !tab.isDisabled()) {
                 if (firstRenderedTab == null) {
                     firstRenderedTab = tab;
                 }

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-23 16:07:41 UTC (rev 2447)
+++ trunk/ui/tabPanel/src/main/java/org/richfaces/renderkit/TabRendererBase.java	2007-08-23 17:09:18 UTC (rev 2448)
@@ -84,7 +84,7 @@
 
     protected boolean shouldRenderTab(UITab tab) {
         String method = tab.getSwitchTypeOrDefault();
-        return (tab.isActive() || UISwitchablePanel.CLIENT_METHOD.equals(method));
+        return (tab.isActive() || !tab.isDisabled() && UISwitchablePanel.CLIENT_METHOD.equals(method));
     }
 
     public void encodeBegin(FacesContext context, UIComponent component)

Added: trunk/ui/tabPanel/src/main/java/org/richfaces/taglib/TabPanelTagBase.java
===================================================================
--- trunk/ui/tabPanel/src/main/java/org/richfaces/taglib/TabPanelTagBase.java	                        (rev 0)
+++ trunk/ui/tabPanel/src/main/java/org/richfaces/taglib/TabPanelTagBase.java	2007-08-23 17:09:18 UTC (rev 2448)
@@ -0,0 +1,72 @@
+/**
+ * License Agreement.
+ *
+ *  JBoss RichFaces - Ajax4jsf Component Library
+ *
+ * Copyright (C) 2007  Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+package org.richfaces.taglib;
+
+import javax.faces.context.FacesContext;
+
+import org.ajax4jsf.webapp.taglib.HtmlComponentTagBase;
+
+/**
+ * 
+ * <br /><br />
+ * 
+ * Created 23.08.2007
+ * @author Nick Belaevski
+ * @since 3.1
+ */
+
+public abstract class TabPanelTagBase extends HtmlComponentTagBase {
+
+	private boolean _selectedTabSet = false;
+	private String _value = null;
+
+	private void logValueDeprecation(String value) {
+		FacesContext facesContext = getFacesContext();
+		facesContext.getExternalContext().log("selectedTab attribute has been already set for component with id: " + this.getId() + 
+				"[" + this._value + "]. value attribute is deprecated and thus has been dropped!");
+	}
+	
+	public void setSelectedTab(String tab) {
+		if (_value != null) {
+			logValueDeprecation(_value);
+		}
+		
+		_selectedTabSet = false;
+		super.setValue(tab);
+		_selectedTabSet = true;
+	}
+	
+	public void setValue(String value) {
+		if (!_selectedTabSet) {
+			_value = value;
+			super.setValue(value);
+		} else {
+			logValueDeprecation(value);
+		}
+	}
+
+	public void release() {
+		super.release();
+		_selectedTabSet = false;
+		_value = null;
+	}
+}

Added: trunk/ui/tabPanel/src/main/java/org/richfaces/taglib/TabPanelTagHandlerBase.java
===================================================================
--- trunk/ui/tabPanel/src/main/java/org/richfaces/taglib/TabPanelTagHandlerBase.java	                        (rev 0)
+++ trunk/ui/tabPanel/src/main/java/org/richfaces/taglib/TabPanelTagHandlerBase.java	2007-08-23 17:09:18 UTC (rev 2448)
@@ -0,0 +1,48 @@
+/**
+ * License Agreement.
+ *
+ *  JBoss RichFaces - Ajax4jsf Component Library
+ *
+ * Copyright (C) 2007  Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+package org.richfaces.taglib;
+
+import org.ajax4jsf.webapp.taglib.AjaxComponentHandler;
+
+import com.sun.facelets.tag.MetaRuleset;
+import com.sun.facelets.tag.jsf.ComponentConfig;
+
+/**
+ * 
+ * <br /><br />
+ * 
+ * Created 23.08.2007
+ * @author Nick Belaevski
+ * @since 3.1
+ */
+
+public abstract class TabPanelTagHandlerBase extends AjaxComponentHandler {
+
+	public TabPanelTagHandlerBase(ComponentConfig config) {
+		super(config);
+	}
+	
+	protected MetaRuleset createMetaRuleset(Class type) {
+		return super.createMetaRuleset(type).alias("selectedTab", "value");
+	}
+
+}

Modified: trunk/ui/tabPanel/src/main/resources/org/richfaces/renderkit/html/scripts/tabPanel.js
===================================================================
--- trunk/ui/tabPanel/src/main/resources/org/richfaces/renderkit/html/scripts/tabPanel.js	2007-08-23 16:07:41 UTC (rev 2447)
+++ trunk/ui/tabPanel/src/main/resources/org/richfaces/renderkit/html/scripts/tabPanel.js	2007-08-23 17:09:18 UTC (rev 2448)
@@ -1,4 +1,4 @@
-if (!RichFaces) var RichFaces = {};
+if (!window.RichFaces) window.RichFaces = {};
 
 var RichFaces_FF_Loaded = (RichFaces.navigatorType() == "FF");
 




More information about the richfaces-svn-commits mailing list