[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