[richfaces-svn-commits] JBoss Rich Faces SVN: r11897 - in trunk/ui/tree/src/main: java/org/richfaces/component and 1 other directory.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Thu Dec 18 15:22:31 EST 2008


Author: nbelaevski
Date: 2008-12-18 15:22:31 -0500 (Thu, 18 Dec 2008)
New Revision: 11897

Modified:
   trunk/ui/tree/src/main/config/component/tree.xml
   trunk/ui/tree/src/main/java/org/richfaces/component/UITree.java
Log:
https://jira.jboss.org/jira/browse/RF-5382

Modified: trunk/ui/tree/src/main/config/component/tree.xml
===================================================================
--- trunk/ui/tree/src/main/config/component/tree.xml	2008-12-18 19:29:00 UTC (rev 11896)
+++ trunk/ui/tree/src/main/config/component/tree.xml	2008-12-18 20:22:31 UTC (rev 11897)
@@ -315,6 +315,16 @@
 			<name>disableKeyboardNavigation</name>
 			<classname>boolean</classname>
 		</property>
+		
+		<property>
+			<name>ajaxNodeSelectionEncodeBehavior</name>
+			<classname>java.lang.String</classname>
+		</property>
+
+		<property>
+			<name>ajaxChildActivationEncodeBehavior</name>
+			<classname>java.lang.String</classname>
+		</property>
 	</component>
 	
 	&listeners;

Modified: trunk/ui/tree/src/main/java/org/richfaces/component/UITree.java
===================================================================
--- trunk/ui/tree/src/main/java/org/richfaces/component/UITree.java	2008-12-18 19:29:00 UTC (rev 11896)
+++ trunk/ui/tree/src/main/java/org/richfaces/component/UITree.java	2008-12-18 20:22:31 UTC (rev 11897)
@@ -61,7 +61,6 @@
 import org.richfaces.component.state.events.ExpandAllCommandEvent;
 import org.richfaces.component.state.events.ExpandNodeCommandEvent;
 import org.richfaces.component.state.events.TreeStateCommandEvent;
-import org.richfaces.event.AjaxExpandedEvent;
 import org.richfaces.event.DragListener;
 import org.richfaces.event.DropListener;
 import org.richfaces.event.NodeExpandedEvent;
@@ -94,6 +93,12 @@
 public abstract class UITree extends UIDataAdaptor implements
 TreeListenerEventsProducer, Draggable, Dropzone, AjaxComponent {
 
+	public static final String ENCODE_BEHAVIOR_NONE = "none";
+
+	public static final String ENCODE_BEHAVIOR_SUBTREE = "subtree";
+
+	public static final String ENCODE_BEHAVIOR_NODE = "node";
+
 	private transient boolean allowCachedModel = false;
 	
 	public static final String COMPONENT_TYPE = "org.richfaces.Tree";
@@ -104,7 +109,7 @@
 
 	public final static String PRESERVE_MODEL_REQUEST = "request";
 
-	public final static String PRESERVE_MODEL_NONE = "none";
+	public final static String PRESERVE_MODEL_NONE = ENCODE_BEHAVIOR_NONE;
 
 	public final static String SWITCH_SERVER = "server";
 
@@ -816,6 +821,12 @@
 
 	public abstract void setSimilarityGroupingId(String similarityGroupingId);
 
+	public abstract String getAjaxChildActivationEncodeBehavior();
+	public abstract void setAjaxChildActivationEncodeBehavior(String behavior);
+	
+	public abstract String getAjaxNodeSelectionEncodeBehavior();
+	public abstract void setAjaxNodeSelectionEncodeBehavior(String behavior);
+
 	public void addChangeExpandListener(NodeExpandedListener listener) {
 		addFacesListener(listener);
 	}
@@ -1306,17 +1317,39 @@
 		return result;
 	}
 	
+	private void handleNodeEncodeBehavior(String behavior) {
+		if (ENCODE_BEHAVIOR_NODE.equals(behavior)) {
+			addNodeRequestKey(getRowKey());
+		} else if (ENCODE_BEHAVIOR_SUBTREE.equals(behavior)) {
+			addRequestKey(getRowKey());
+		} else if (!ENCODE_BEHAVIOR_NONE.equals(behavior)) {
+			throw new IllegalArgumentException("Unsupported behavior value: " + behavior + "!");
+		}
+	}
+	
 	@Override
 	protected void addAjaxKeyEvent(FacesEvent event) {
 		if (event instanceof TreeAjaxEvent) {
 			TreeAjaxEvent treeAjaxEvent = (TreeAjaxEvent) event;
 			if (TreeAjaxEventType.EXPANSION.equals(treeAjaxEvent.getEventType())) {
 				addRequestKey(getRowKey());
+			} else if (TreeAjaxEventType.SELECTION.equals(treeAjaxEvent.getEventType())) {
+				String behavior = getAjaxNodeSelectionEncodeBehavior();
+				if (behavior == null || behavior.length() == 0) {
+					super.addAjaxKeyEvent(event);
+				} else {
+					handleNodeEncodeBehavior(behavior);
+				}
 			} else {
 				super.addAjaxKeyEvent(event);
 			}
 		} else {
-			super.addAjaxKeyEvent(event);
+			String behavior = getAjaxChildActivationEncodeBehavior();
+			if (behavior == null || behavior.length() == 0) {
+				super.addAjaxKeyEvent(event);
+			} else {
+				handleNodeEncodeBehavior(behavior);
+			}
 		}
 	}
 }
\ No newline at end of file




More information about the richfaces-svn-commits mailing list