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>