Author: Alex.Kolonitsky
Date: 2009-09-10 13:41:31 -0400 (Thu, 10 Sep 2009)
New Revision: 15536
Modified:
branches/community/3.3.X/ui/tree/src/main/java/org/richfaces/component/UITreeNode.java
branches/community/3.3.X/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java
branches/community/3.3.X/ui/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree.js
branches/community/3.3.X/ui/tree/src/main/templates/htmlTreeNode.jspx
Log:
Tree: selection and expanding impossible if ajaxSingle=true and some input validation
failed.
https://jira.jboss.org/jira/browse/RF-5609
Modified:
branches/community/3.3.X/ui/tree/src/main/java/org/richfaces/component/UITreeNode.java
===================================================================
---
branches/community/3.3.X/ui/tree/src/main/java/org/richfaces/component/UITreeNode.java 2009-09-10
16:56:41 UTC (rev 15535)
+++
branches/community/3.3.X/ui/tree/src/main/java/org/richfaces/component/UITreeNode.java 2009-09-10
17:41:31 UTC (rev 15536)
@@ -80,7 +80,6 @@
private boolean timeoutSet = false;
private Object process = null;
- private boolean processSet = false;
public static final String COMPONENT_TYPE = "org.richfaces.TreeNode";
@@ -286,7 +285,7 @@
}
ValueBinding vb = getValueBinding("acceptedTypes");
if (null != vb){
- return (Object)vb.getValue(getFacesContext());
+ return vb.getValue(getFacesContext());
} else {
UITree tree = getUITree();
if (tree != null) {
@@ -373,7 +372,6 @@
state[16] = this.similarityGroupingId;
state[17] = new Boolean(this.bypassUpdates);
state[18] = this.process;
- state[19] = Boolean.valueOf(this.processSet);
return state;
}
@@ -399,7 +397,6 @@
this.similarityGroupingId = (String) _state[16];
this.bypassUpdates = ((Boolean)_state[17]).booleanValue();
this.process = _state[18];
- this.processSet = ((Boolean)_state[19]).booleanValue();
}
public void setDragIndicator(String dragIndicator) {
@@ -586,7 +583,6 @@
public void setProcess(Object process) {
this.process = process;
- this.processSet = true;
}
/**
Modified:
branches/community/3.3.X/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java
===================================================================
---
branches/community/3.3.X/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java 2009-09-10
16:56:41 UTC (rev 15535)
+++
branches/community/3.3.X/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java 2009-09-10
17:41:31 UTC (rev 15536)
@@ -558,18 +558,25 @@
protected String getAjaxScript(FacesContext context, UITree tree) {
String id = tree.getBaseClientId(context);
- JSFunction function = AjaxRendererUtils
- .buildAjaxFunction(tree, context);
- Map eventOptions = AjaxRendererUtils.buildEventOptions(context, tree, true);
- Map parameters = (Map) eventOptions.get("parameters");
- parameters.remove(id);
- parameters.put(id + UITree.SELECTED_NODE_PARAMETER_NAME,
- new JSReference("event.selectedNode"));
+
+ StringBuilder builder = new StringBuilder();
+ Map<String, Object> eventOptions =
AjaxRendererUtils.buildEventOptions(context, tree, true);
+ Map<String, Object> parameters = (Map<String, Object>)
eventOptions.get("parameters");
+ parameters.remove(id);
+ parameters.put(id + UITree.SELECTED_NODE_PARAMETER_NAME, new
JSReference("event.selectedNode"));
+ eventOptions.put("parameters", new JSReference("params"));
+
+ builder.append("var params =
").append(ScriptUtils.toScript(parameters)).append(";\n");
+ builder.append("if
(!params.").append(AjaxRendererUtils.AJAX_SINGLE_PARAMETER_NAME)
+ .append(" && event.ajaxSingle) {\n");
+ builder.append("params.").append(AjaxRendererUtils.AJAX_SINGLE_PARAMETER_NAME).append("
= event.ajaxSingle;\n");
+ builder.append("}\n");
+
+ JSFunction function = AjaxRendererUtils.buildAjaxFunction(tree, context);
function.addParameter(eventOptions);
- StringBuffer buffer = new StringBuffer();
- function.appendScript(buffer);
- buffer.append("; return false;");
- return buffer.toString();
+ builder.append(function);
+ builder.append("; return false;");
+ return builder.toString();
}
public String writeScriptElement(FacesContext context, UITree tree, String code) throws
IOException {
Modified:
branches/community/3.3.X/ui/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree.js
===================================================================
---
branches/community/3.3.X/ui/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree.js 2009-09-10
16:56:41 UTC (rev 15535)
+++
branches/community/3.3.X/ui/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree.js 2009-09-10
17:41:31 UTC (rev 15536)
@@ -136,6 +136,10 @@
var attr = Richfaces.getNSAttribute("ajaxselectedlistener",
$(event.selectedNode + Tree.ID_DEVIDER + Tree.ID_ICON));
if (attr) {
+ var ajaxSingle = Richfaces.getNSAttribute("ajaxsingle", $(treeItem.id +
":text"));;
+ if (ajaxSingle && ajaxSingle == "true") {
+ event.ajaxSingle = this.id
+ }
this.onAjaxSelect(event);
}
} else if (event[Richfaces.TreeExpandEvent]){
Modified: branches/community/3.3.X/ui/tree/src/main/templates/htmlTreeNode.jspx
===================================================================
--- branches/community/3.3.X/ui/tree/src/main/templates/htmlTreeNode.jspx 2009-09-10
16:56:41 UTC (rev 15535)
+++ branches/community/3.3.X/ui/tree/src/main/templates/htmlTreeNode.jspx 2009-09-10
17:41:31 UTC (rev 15536)
@@ -229,7 +229,7 @@
</td>
<td class="rich-tree-node-text
#{component.attributes['nodeClass']}"
rich:selectedclass="#{selectedClass}"
rich:highlightedclass="#{highlightedClass}"
- id="#{clientId}:text">
+ id="#{clientId}:text"
rich:ajaxsingle="#{component.attributes['ajaxSingle']}">
<vcp:body />
</td>
</tr>