Author: artdaw
Date: 2011-02-23 14:09:16 -0500 (Wed, 23 Feb 2011)
New Revision: 21899
Added:
branches/4.0.0.CR1/cdk/generator/src/main/java/org/richfaces/cdk/generate/taglib/ListenerAttributes.java
branches/4.0.0.CR1/examples/iteration-demo/src/main/java/org/richfaces/demo/SelectionChangeActionListenerImpl.java
branches/4.0.0.CR1/examples/iteration-demo/src/main/java/org/richfaces/demo/ToggleActionListenerImpl.java
Modified:
branches/4.0.0.CR1/cdk/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibGeneratorVisitor.java
branches/4.0.0.CR1/cdk/generator/src/main/java/org/richfaces/cdk/model/AttributeModel.java
branches/4.0.0.CR1/examples/iteration-demo/src/main/java/org/richfaces/demo/TreeBean.java
branches/4.0.0.CR1/examples/iteration-demo/src/main/webapp/tree.xhtml
Log:
RF-9958: @for, @binding, and @type were added for itemChangeListener, panelToggleListener,
treeToggleListener, treeSelectionChangeListener components.
Added:
branches/4.0.0.CR1/cdk/generator/src/main/java/org/richfaces/cdk/generate/taglib/ListenerAttributes.java
===================================================================
---
branches/4.0.0.CR1/cdk/generator/src/main/java/org/richfaces/cdk/generate/taglib/ListenerAttributes.java
(rev 0)
+++
branches/4.0.0.CR1/cdk/generator/src/main/java/org/richfaces/cdk/generate/taglib/ListenerAttributes.java 2011-02-23
19:09:16 UTC (rev 21899)
@@ -0,0 +1,28 @@
+package org.richfaces.cdk.generate.taglib;
+
+import org.richfaces.cdk.model.AttributeModel;
+import org.richfaces.cdk.model.ClassName;
+import org.richfaces.cdk.model.PropertyBase;
+
+import javax.el.ValueExpression;
+
+/**
+ * User: Gleb Galkin
+ * Date: 23.02.11
+ */
+public enum ListenerAttributes {
+ FOR(new AttributeModel("for", false, ClassName.get(String.class))),
+ BINDING(new AttributeModel("binding", false,
ClassName.get(ValueExpression.class))),
+ LISTENER(new AttributeModel("listener", false,
ClassName.get(ValueExpression.class))),
+ TYPE(new AttributeModel("type", false,
ClassName.get(ValueExpression.class)));
+
+ private PropertyBase attribute;
+
+ ListenerAttributes(PropertyBase attribute) {
+ this.attribute = attribute;
+ }
+
+ public PropertyBase getAttribute() {
+ return attribute;
+ }
+}
Modified:
branches/4.0.0.CR1/cdk/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibGeneratorVisitor.java
===================================================================
---
branches/4.0.0.CR1/cdk/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibGeneratorVisitor.java 2011-02-23
18:26:27 UTC (rev 21898)
+++
branches/4.0.0.CR1/cdk/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibGeneratorVisitor.java 2011-02-23
19:09:16 UTC (rev 21899)
@@ -26,19 +26,7 @@
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.richfaces.cdk.annotations.TagType;
-import org.richfaces.cdk.model.BeanModelBase;
-import org.richfaces.cdk.model.BehaviorModel;
-import org.richfaces.cdk.model.ComponentLibrary;
-import org.richfaces.cdk.model.ComponentModel;
-import org.richfaces.cdk.model.ConverterModel;
-import org.richfaces.cdk.model.DescriptionGroup;
-import org.richfaces.cdk.model.EventModel;
-import org.richfaces.cdk.model.FacesId;
-import org.richfaces.cdk.model.FunctionModel;
-import org.richfaces.cdk.model.PropertyBase;
-import org.richfaces.cdk.model.SimpleVisitor;
-import org.richfaces.cdk.model.TagModel;
-import org.richfaces.cdk.model.ValidatorModel;
+import org.richfaces.cdk.model.*;
import org.richfaces.cdk.util.Strings;
/**
@@ -262,11 +250,18 @@
if (isFaceletsTag(tagModel)) {
Element tag = createTag(tagModel.getName());
addTagHandler(tag, tagModel);
+ appendAttributesForListener(tag);
}
}
return null;
}
+ private void appendAttributesForListener(Element tag) {
+ for (ListenerAttributes attribute : ListenerAttributes.values()) {
+ createAttributeElement(tag, attribute.getAttribute().getName(),
attribute.getAttribute());
+ }
+ }
+
private boolean isFaceletsTag(TagType type) {
return TagType.Facelets.equals(type) || TagType.All.equals(type);
@@ -281,7 +276,7 @@
* Add common description elements.
* </p>
*
- * @param parant
+ * @param parent
* @param model
*/
private void addDescription(Element parent, DescriptionGroup model) {
Modified:
branches/4.0.0.CR1/cdk/generator/src/main/java/org/richfaces/cdk/model/AttributeModel.java
===================================================================
---
branches/4.0.0.CR1/cdk/generator/src/main/java/org/richfaces/cdk/model/AttributeModel.java 2011-02-23
18:26:27 UTC (rev 21898)
+++
branches/4.0.0.CR1/cdk/generator/src/main/java/org/richfaces/cdk/model/AttributeModel.java 2011-02-23
19:09:16 UTC (rev 21899)
@@ -32,4 +32,15 @@
*/
public class AttributeModel extends PropertyBase {
+ public AttributeModel() {
+ super();
+ }
+
+ public AttributeModel(String name, boolean required, ClassName type) {
+ super();
+ setName(name);
+ setRequired(required);
+ setType(type);
+ }
+
}
Added:
branches/4.0.0.CR1/examples/iteration-demo/src/main/java/org/richfaces/demo/SelectionChangeActionListenerImpl.java
===================================================================
---
branches/4.0.0.CR1/examples/iteration-demo/src/main/java/org/richfaces/demo/SelectionChangeActionListenerImpl.java
(rev 0)
+++
branches/4.0.0.CR1/examples/iteration-demo/src/main/java/org/richfaces/demo/SelectionChangeActionListenerImpl.java 2011-02-23
19:09:16 UTC (rev 21899)
@@ -0,0 +1,17 @@
+package org.richfaces.demo;
+
+import org.richfaces.event.TreeSelectionChangeEvent;
+import org.richfaces.event.TreeSelectionChangeListener;
+
+import javax.faces.event.AbortProcessingException;
+
+/**
+ * User: Gleb Galkin
+ * Date: 23.02.11
+ */
+public class SelectionChangeActionListenerImpl implements TreeSelectionChangeListener {
+
+ public void processSelectionChange(TreeSelectionChangeEvent event) throws
AbortProcessingException {
+ System.out.println("Inside Selection Change Action");
+ }
+}
Added:
branches/4.0.0.CR1/examples/iteration-demo/src/main/java/org/richfaces/demo/ToggleActionListenerImpl.java
===================================================================
---
branches/4.0.0.CR1/examples/iteration-demo/src/main/java/org/richfaces/demo/ToggleActionListenerImpl.java
(rev 0)
+++
branches/4.0.0.CR1/examples/iteration-demo/src/main/java/org/richfaces/demo/ToggleActionListenerImpl.java 2011-02-23
19:09:16 UTC (rev 21899)
@@ -0,0 +1,14 @@
+package org.richfaces.demo;
+
+import org.richfaces.event.TreeToggleEvent;
+
+/**
+ * User: Gleb Galkin
+ * Date: 23.02.11
+ */
+public class ToggleActionListenerImpl {
+
+ public void processToggleAction(TreeToggleEvent event) {
+ System.out.println("Inside Toggle Action: " + (event.isCollapsed() ?
"collapsed tree" : "expanded tree"));
+ }
+}
Modified:
branches/4.0.0.CR1/examples/iteration-demo/src/main/java/org/richfaces/demo/TreeBean.java
===================================================================
---
branches/4.0.0.CR1/examples/iteration-demo/src/main/java/org/richfaces/demo/TreeBean.java 2011-02-23
18:26:27 UTC (rev 21898)
+++
branches/4.0.0.CR1/examples/iteration-demo/src/main/java/org/richfaces/demo/TreeBean.java 2011-02-23
19:09:16 UTC (rev 21899)
@@ -21,13 +21,17 @@
*/
package org.richfaces.demo;
-import java.io.Serializable;
-import java.text.DateFormat;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
+import org.richfaces.component.AbstractTree;
+import org.richfaces.component.AbstractTreeNode;
+import org.richfaces.component.SwitchType;
+import org.richfaces.event.TreeSelectionChangeEvent;
+import org.richfaces.event.TreeSelectionChangeListener;
+import org.richfaces.event.TreeToggleEvent;
+import org.richfaces.event.TreeToggleListener;
+import org.richfaces.log.LogFactory;
+import org.richfaces.log.Logger;
+
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
@@ -37,17 +41,13 @@
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.event.FacesEvent;
import javax.swing.tree.TreeNode;
+import java.io.Serializable;
+import java.text.DateFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
-import org.richfaces.component.AbstractTree;
-import org.richfaces.component.AbstractTreeNode;
-import org.richfaces.component.SwitchType;
-import org.richfaces.event.TreeSelectionChangeEvent;
-import org.richfaces.event.TreeSelectionChangeListener;
-import org.richfaces.event.TreeToggleEvent;
-import org.richfaces.event.TreeToggleListener;
-import org.richfaces.log.LogFactory;
-import org.richfaces.log.Logger;
-
/**
* @author Nick Belaevski
*
@@ -114,7 +114,10 @@
private String toggleNodeEvent = "";
private String executeTestText;
-
+
+ private ToggleActionListenerImpl toggleActionListenerImpl = new
ToggleActionListenerImpl();
+ private SelectionChangeActionListenerImpl selectionChangeActionListener;
+
private static Object staticGetNodeData() {
FacesContext facesContext = FacesContext.getCurrentInstance();
return facesContext.getApplication().evaluateExpressionGet(facesContext,
"#{node}", Object.class);
@@ -245,4 +248,20 @@
public String getCurrentTimeAsString() {
return DateFormat.getTimeInstance().format(new Date());
}
+
+ public ToggleActionListenerImpl getToggleActionListenerImpl() {
+ return toggleActionListenerImpl;
+ }
+
+ public void setToggleActionListenerImpl(ToggleActionListenerImpl
toggleActionListenerImpl) {
+ this.toggleActionListenerImpl = toggleActionListenerImpl;
+ }
+
+ public SelectionChangeActionListenerImpl getSelectionChangeActionListener() {
+ return selectionChangeActionListener;
+ }
+
+ public void setSelectionChangeActionListener(SelectionChangeActionListenerImpl
selectionChangeActionListener) {
+ this.selectionChangeActionListener = selectionChangeActionListener;
+ }
}
Modified: branches/4.0.0.CR1/examples/iteration-demo/src/main/webapp/tree.xhtml
===================================================================
--- branches/4.0.0.CR1/examples/iteration-demo/src/main/webapp/tree.xhtml 2011-02-23
18:26:27 UTC (rev 21898)
+++ branches/4.0.0.CR1/examples/iteration-demo/src/main/webapp/tree.xhtml 2011-02-23
19:09:16 UTC (rev 21899)
@@ -107,10 +107,14 @@
<h:form id="form">
Base tree:
- <it:tree id="tree" nodeType="#{node.parent == null ?
'rootNode': 'childNode'}" var="node"
value="#{treeBean.rootNodes}"
+ <it:tree id="tree" nodeType="#{node.parent == null ?
'rootNode': 'childNode'}" var="node"
value="#{treeBean.rootNodes}"
selectionType="#{treeBean.selectionType}"
toggleType="#{treeBean.toggleType}"
selection="#{treeBean.selection}">
- <it:treeNode type="rootNode">
- <h:panelGroup id="rootNodeGroup">
+
+ <it:treeToggleListener
listener="#{treeBean.toggleActionListenerImpl.processToggleAction}" />
+ <it:treeSelectionChangeListener
binding="#{treeBean.selectionChangeActionListener}"
type="org.richfaces.demo.SelectionChangeActionListenerImpl" />
+
+ <it:treeNode type="rootNode">
+ <h:panelGroup id="rootNodeGroup">
Root node: #{node.data} -
<h:commandLink value="link"
action="#{treeBean.clickNode}">
<f:ajax render=":messages" />