Author: sergeyhalipov
Date: 2007-06-01 06:44:50 -0400 (Fri, 01 Jun 2007)
New Revision: 970
Modified:
trunk/richfaces/tree/src/main/config/component/tree.xml
trunk/richfaces/tree/src/main/java/org/richfaces/component/UITree.java
trunk/richfaces/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java
trunk/richfaces/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree-item.js
trunk/richfaces/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree.js
trunk/richfaces/tree/src/main/templates/htmlTree.jspx
trunk/richfaces/tree/src/main/templates/htmlTreeNode.jspx
Log:
http://jira.jboss.com/jira/browse/RF-224
Modified: trunk/richfaces/tree/src/main/config/component/tree.xml
===================================================================
--- trunk/richfaces/tree/src/main/config/component/tree.xml 2007-06-01 10:21:39 UTC (rev
969)
+++ trunk/richfaces/tree/src/main/config/component/tree.xml 2007-06-01 10:44:50 UTC (rev
970)
@@ -193,7 +193,19 @@
<property hidden="true">
<name>dropValue</name>
- </property>
+ </property>
+
+ <property>
+ <name>toggleOnClick</name>
+ <classname>boolean</classname>
+ <description>
+ If false do not toggle node state on click.
+ If true, than node will be toggles on click on ether node content,
+ or node icon.
+ Default value is false.
+ </description>
+ <defaultvalue>false</defaultvalue>
+ </property>
</component>
Modified: trunk/richfaces/tree/src/main/java/org/richfaces/component/UITree.java
===================================================================
--- trunk/richfaces/tree/src/main/java/org/richfaces/component/UITree.java 2007-06-01
10:21:39 UTC (rev 969)
+++ trunk/richfaces/tree/src/main/java/org/richfaces/component/UITree.java 2007-06-01
10:44:50 UTC (rev 970)
@@ -603,9 +603,12 @@
public abstract String getSelectedClass();
public abstract void setNodeFace(String nodeFace);
- public abstract String getNodeFace();
+ public abstract String getNodeFace();
+ public abstract void setToggleOnClick(boolean toggleOnClick);
+ public abstract boolean isToggleOnClick();
+
public void addChangeExpandListener(NodeExpandedListener listener) {
addFacesListener(listener);
}
Modified:
trunk/richfaces/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java
===================================================================
---
trunk/richfaces/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java 2007-06-01
10:21:39 UTC (rev 969)
+++
trunk/richfaces/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java 2007-06-01
10:44:50 UTC (rev 970)
@@ -68,7 +68,11 @@
addParameterEncoder(DnDParametersEncoder.getInstance());
}
- protected String getToggleScript(FacesContext context, UITreeNode treeNode) {
+ protected String getToggleScript(FacesContext context, UITreeNode treeNode, String to)
{
+ if ("handle".equals(to) && treeNode.getUITree().isToggleOnClick() ||
+ "mainRow".equals(to) && !treeNode.getUITree().isToggleOnClick())
+ return "";
+
UITree tree = treeNode.getUITree();
String id = treeNode.getClientId(context);
String toggleId = id + NamingContainer.SEPARATOR_CHAR
Modified:
trunk/richfaces/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree-item.js
===================================================================
---
trunk/richfaces/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree-item.js 2007-06-01
10:21:39 UTC (rev 969)
+++
trunk/richfaces/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree-item.js 2007-06-01
10:44:50 UTC (rev 970)
@@ -1,6 +1,6 @@
Tree.Item = Class.create();
Tree.Item.prototype = {
- initialize: function(id, tree, parent, index, switchType) {
+ initialize: function(id, tree, parent, index, switchType, toggleOnClick) {
this.index = index;
this.parent = parent;
this.id = id;
@@ -9,6 +9,7 @@
this.elements = {};
($(id)).object = this;
this.getElements();
+ this.toggleOnClick = toggleOnClick;
this.eventSelectionClick = this.toggleSelection.bindAsEventListener(this);
this.eventMouseOut = this.processMouseOut.bindAsEventListener(this);
@@ -33,9 +34,13 @@
Event.observe(this.elements.text, "mouseover", this.eventMouseOver);
if (this.switchType=="client" && this.childs.length > 0) {
- if (this.elements.handle) {
- this.eventCollapsionClick = this.toggleCollapsion.bindAsEventListener(this);
- Event.observe(this.elements.handle, "click", this.eventCollapsionClick);
+ this.eventCollapsionClick = this.toggleCollapsion.bindAsEventListener(this);
+ if (this.toggleOnClick) {
+ if (this.elements.mainRow)
+ Event.observe(this.elements.mainRow, "click", this.eventCollapsionClick);
+ } else {
+ if (this.elements.handle)
+ Event.observe(this.elements.handle, "click", this.eventCollapsionClick);
}
}
@@ -135,7 +140,13 @@
collapse: function() {
if (!this.isCollapsed() && this.switchType!="client") {
- this.elements.handle.onclick();
+ if (this.toggleOnClick) {
+ if (this.elements.mainRow)
+ this.elements.mainRow.onclick();
+ } else {
+ if (this.elements.handle)
+ this.elements.handle.onclick();
+ }
}
if (this.hasChilds() && !this.isCollapsed()) {
Element.hide(this.elements.row);
@@ -152,7 +163,13 @@
expand: function() {
if (this.isCollapsed() && this.switchType!="client") {
- this.elements.handle.onclick();
+ if (this.toggleOnClick) {
+ if (this.elements.mainRow)
+ this.elements.mainRow.onclick();
+ } else {
+ if (this.elements.handle)
+ this.elements.handle.onclick();
+ }
}
if (this.hasChilds() && this.isCollapsed()) {
Element.show(this.elements.row);
Modified:
trunk/richfaces/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree.js
===================================================================
---
trunk/richfaces/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree.js 2007-06-01
10:21:39 UTC (rev 969)
+++
trunk/richfaces/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree.js 2007-06-01
10:44:50 UTC (rev 970)
@@ -19,7 +19,7 @@
Tree.CLASS_AJAX_SELECTED_LISTENER_FLAG = "ajax_selected_listener_flag";
Tree.prototype = {
- initialize: function(id, input, switchType, events, onAjaxSelect, dragIndicatorId) {
+ initialize: function(id, input, switchType, events, onAjaxSelect, dragIndicatorId,
toggleOnClick) {
this.items = [];
this.childs = [];
this.elements = {};
@@ -34,6 +34,7 @@
this.element = $(id);
this.inputId = input;
this.input = $(this.inputId);
+ this.toggleOnClick = toggleOnClick;
var options = Object.extend({
columnCount: 0
@@ -111,7 +112,7 @@
for (var i = 0; i < this.elements.contentTd.childNodes.length; i++) {
var child = this.elements.contentTd.childNodes[i];
if (child.nodeType == 1 && child.tagName.toLowerCase() == "table")
{
- this.addChild(new Tree.Item(child.id, this, this, this.childs.length,
this.switchType));
+ this.addChild(new Tree.Item(child.id, this, this, this.childs.length,
this.switchType, this.toggleOnClick));
}
}
}
Modified: trunk/richfaces/tree/src/main/templates/htmlTree.jspx
===================================================================
--- trunk/richfaces/tree/src/main/templates/htmlTree.jspx 2007-06-01 10:21:39 UTC (rev
969)
+++ trunk/richfaces/tree/src/main/templates/htmlTree.jspx 2007-06-01 10:44:50 UTC (rev
970)
@@ -58,7 +58,8 @@
function(event) {
#{this:getAjaxScript(context, component)}
},
- "#{this:getDragIndicatorId(context, component)}"
+ "#{this:getDragIndicatorId(context, component)}",
+ #{component.toggleOnClick}
);
#{this:getScriptContributions(context, component)}
</script>
Modified: trunk/richfaces/tree/src/main/templates/htmlTreeNode.jspx
===================================================================
--- trunk/richfaces/tree/src/main/templates/htmlTreeNode.jspx 2007-06-01 10:21:39 UTC (rev
969)
+++ trunk/richfaces/tree/src/main/templates/htmlTreeNode.jspx 2007-06-01 10:44:50 UTC (rev
970)
@@ -31,7 +31,7 @@
<f:call name="initializeLines" />
<f:call name="initializeResources" />
- <tr id="#{clientId}:mainRow" >
+ <tr id="#{clientId}:mainRow" onclick="#{this:getToggleScript(context,
component, 'mainRow')} return false;" >
<f:call name="encodeAttributeParameters" />
<td class="dr-tree-h-ic #{line}">
<div>
@@ -47,7 +47,7 @@
]]>
</jsp:scriptlet>
<a href="#" id="#{clientId}:handle"
- onclick="#{this:getToggleScript(context, component)} return
false;">
+ onclick="#{this:getToggleScript(context, component, 'handle')}
return false;">
<jsp:scriptlet>
<![CDATA[