You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by sv...@apache.org on 2006/11/14 16:20:06 UTC

svn commit: r474816 - in /myfaces/tomahawk/trunk/sandbox/core/src/main: java/org/apache/myfaces/custom/toggle/ tld/

Author: svieujot
Date: Tue Nov 14 07:20:05 2006
New Revision: 474816

URL: http://svn.apache.org/viewvc?view=rev&rev=474816
Log:
Add s:toggleGroup toggled attribute, and make it possible to have several s:toggleLink in an s:toggleGroup.

Modified:
    myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/toggle/HtmlToggleGroup.java
    myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/toggle/HtmlToggleGroupRenderer.java
    myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/toggle/HtmlToggleGroupTag.java
    myfaces/tomahawk/trunk/sandbox/core/src/main/tld/myfaces_sandbox.tld

Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/toggle/HtmlToggleGroup.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/toggle/HtmlToggleGroup.java?view=diff&rev=474816&r1=474815&r2=474816
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/toggle/HtmlToggleGroup.java (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/toggle/HtmlToggleGroup.java Tue Nov 14 07:20:05 2006
@@ -20,6 +20,8 @@
 package org.apache.myfaces.custom.toggle;
 
 import javax.faces.component.html.HtmlPanelGroup;
+import javax.faces.context.FacesContext;
+import javax.faces.el.ValueBinding;
 
 /**
  * Container class allows user to toggle between view/edit mode.
@@ -32,9 +34,36 @@
     public static final String COMPONENT_TYPE = "org.apache.myfaces.HtmlToggleGroup";
     public static final String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.HtmlToggleGroup";
 
+    public static final boolean DEFAULT_TOGGLED = false;
+
+    private Boolean _toggled = null;
+    
     public HtmlToggleGroup()
     {
         super();
         setRendererType(HtmlToggleGroup.DEFAULT_RENDERER_TYPE);
+    }
+
+    public boolean isToggled()
+    {
+        if (_toggled != null) return _toggled.booleanValue();
+        ValueBinding vb = getValueBinding("toggled");
+        Boolean v = vb != null ? (Boolean)vb.getValue(getFacesContext()) : null;
+        return v != null ? v.booleanValue() : DEFAULT_TOGGLED;
+    }
+
+    public Object saveState(FacesContext context)
+    {
+        Object[] values = new Object[2];
+        values[0] = super.saveState(context);
+        values[1] = _toggled;
+        return values;
+    }
+
+    public void restoreState(FacesContext context, Object state)
+    {
+        Object values[] = (Object[]) state;
+        super.restoreState(context, values[0]);
+        _toggled =  (Boolean)values[2];
     }
 }

Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/toggle/HtmlToggleGroupRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/toggle/HtmlToggleGroupRenderer.java?view=diff&rev=474816&r1=474815&r2=474816
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/toggle/HtmlToggleGroupRenderer.java (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/toggle/HtmlToggleGroupRenderer.java Tue Nov 14 07:20:05 2006
@@ -33,18 +33,16 @@
 
 public class HtmlToggleGroupRenderer extends HtmlGroupRendererBase {
 
-    private static final String DISPLAY_NONE_STYLE = ";display:none;";
-
     public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
         RendererUtils.checkParamValidity(context, component, HtmlToggleGroup.class);
-        boolean editMode = checkEditMode(component.getChildren());
-        toggleVisibility(component.getChildren(), editMode);
-        super.encodeEnd(context, component);
+        HtmlToggleGroup toggleGroup = (HtmlToggleGroup) component;
+        boolean editMode = toggleGroup.isToggled() || checkEditMode(toggleGroup.getChildren());
+        toggleVisibility(toggleGroup.getChildren(), editMode);
+        super.encodeEnd(context, toggleGroup);
     }
 
     private void toggleVisibility(List children, boolean editMode) {
-        Iterator it = children.iterator();
-        while (it.hasNext()) {
+        for(Iterator it = children.iterator(); it.hasNext(); ) {
             UIComponent component = (UIComponent) it.next();
 
             if (editMode)
@@ -166,16 +164,20 @@
 
     // gets the edit mode from the child 'toggleLink' component
     private boolean checkEditMode(List children) {
-        Iterator it = children.iterator();
-        while (it.hasNext()) {
+    	boolean toggleLinkFound = false;
+
+        for(Iterator it = children.iterator(); it.hasNext(); ) {
             UIComponent component = (UIComponent) it.next();
-            if (component instanceof ToggleLink) {
-                System.out.println("edit mode is " + ((ToggleLink) component).getEditMode());
-                return ((ToggleLink) component).getEditMode();
+            if (component instanceof ToggleLink ) {
+            	toggleLinkFound = true;
+                if( ((ToggleLink) component).getEditMode() )
+                	return true;
             }
         }
-        Log log = getLog();
-        log.error("Could not find child ToggleLink component for HtmlToggleGroup");
+
+        if( ! toggleLinkFound )
+        	getLog().error("Could not find child ToggleLink component for HtmlToggleGroup");
+
         return false;
 
     }

Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/toggle/HtmlToggleGroupTag.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/toggle/HtmlToggleGroupTag.java?view=diff&rev=474816&r1=474815&r2=474816
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/toggle/HtmlToggleGroupTag.java (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/toggle/HtmlToggleGroupTag.java Tue Nov 14 07:20:05 2006
@@ -19,14 +19,36 @@
 
 package org.apache.myfaces.custom.toggle;
 
+import javax.faces.component.UIComponent;
+
 import org.apache.myfaces.shared_tomahawk.taglib.html.HtmlPanelGroupTagBase;
 
 public class HtmlToggleGroupTag extends HtmlPanelGroupTagBase {
+
+	private String _toggled;
+
     public String getComponentType() {
         return HtmlToggleGroup.COMPONENT_TYPE;
     }
 
     public String getRendererType() {
         return HtmlToggleGroup.DEFAULT_RENDERER_TYPE;
+    }
+
+    public void release()
+    {
+        super.release();
+        _toggled=null;
+    }
+
+    protected void setProperties(UIComponent component)
+    {
+        super.setProperties(component);
+        setBooleanProperty(component, "toggled", _toggled);
+    }
+
+    public void setToggled(String value)
+    {
+        this._toggled = value;
     }
 }

Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/tld/myfaces_sandbox.tld
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/tld/myfaces_sandbox.tld?view=diff&rev=474816&r1=474815&r2=474816
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/tld/myfaces_sandbox.tld (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/tld/myfaces_sandbox.tld Tue Nov 14 07:20:05 2006
@@ -645,18 +645,31 @@
 		</attribute>
     </tag>
 
-        <!-- htmlToggleGroup -->
-        <tag>
-            <name>toggleGroup</name>
-            <tag-class>org.apache.myfaces.custom.toggle.HtmlToggleGroupTag</tag-class>
-            <body-content>JSP</body-content>
-            <description>
-                Extends PanelGroup. Allows user to toggle between 'view' mode and 'edit' mode
-            </description>
-            &standard_panel_group_attributes;
-        </tag>
+    <!-- toggleGroup -->
+    <tag>
+        <name>toggleGroup</name>
+        <tag-class>org.apache.myfaces.custom.toggle.HtmlToggleGroupTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+            Extends PanelGroup. Allows user to toggle between 'view' mode and 'edit' mode.
+            In the toggleGroup, include a toggleLink.
+            When the toggleLink is clicked, the rest of the group is shown, and the link is hidden.
+        </description>
+        &standard_panel_group_attributes;
 
-        <!-- toggleLink -->
+		<attribute>
+			<name>toggled</name>
+			<required>false</required>
+			<rtexprvalue>false</rtexprvalue>
+			<type>java.lang.String</type>
+			<description>
+				You can set toggled to true to force the toggleGroup to always be in toggle mode.
+				Default is false.
+			</description>
+		</attribute>
+    </tag>
+
+    <!-- toggleLink -->
 	<tag>
 		<name>toggleLink</name>
 		<tag-class>org.apache.myfaces.custom.toggle.ToggleLinkTag</tag-class>