JBoss Rich Faces SVN: r26 - in trunk: richfaces/common/src/main/resources/org/richfaces/renderkit/html/scripts/dnd and 6 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2007-03-06 15:27:54 -0500 (Tue, 06 Mar 2007)
New Revision: 26
Modified:
trunk/
trunk/richfaces-samples/tree-demo/src/main/webapp/pages/index.jsp
trunk/richfaces/common/src/main/resources/org/richfaces/renderkit/html/scripts/dnd/dnd-draggable.js
trunk/richfaces/common/src/main/resources/org/richfaces/renderkit/html/scripts/dnd/dnd-dropzone.js
trunk/richfaces/drag-drop/src/main/java/org/richfaces/renderkit/DnDEventsExchangeMailer.java
trunk/richfaces/drag-drop/src/main/resources/org/richfaces/renderkit/html/scripts/simple-draggable.js
trunk/richfaces/drag-drop/src/main/resources/org/richfaces/renderkit/html/scripts/simple-dropzone.js
trunk/richfaces/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java
trunk/richfaces/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree-item-dnd.js
trunk/richfaces/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree.js
trunk/richfaces/tree/src/main/templates/htmlTreeNode.jspx
Log:
DnD fixes:
- JS method getDndParams() divided into drag and drop methods
- Shuffled types in DnDEventsExchangeMailer fixed
- Tree now handles correctly DnD params for UITree & UINode
- Test for Tree updated
Property changes on: trunk
___________________________________________________________________
Name: svn:ignore
+ .project
Modified: trunk/richfaces/common/src/main/resources/org/richfaces/renderkit/html/scripts/dnd/dnd-draggable.js
===================================================================
--- trunk/richfaces/common/src/main/resources/org/richfaces/renderkit/html/scripts/dnd/dnd-draggable.js 2007-03-06 20:23:23 UTC (rev 25)
+++ trunk/richfaces/common/src/main/resources/org/richfaces/renderkit/html/scripts/dnd/dnd-draggable.js 2007-03-06 20:27:54 UTC (rev 26)
@@ -3,34 +3,52 @@
* base class for draggable component.
*/
DnD.Draggable = function() {};
-DnD.Draggable.prototype = {
- getElement: function() {
- return $(this.id);
- },
-
- getDnDParams: function() {
- var elt = this.getElement();
- var attr = elt.attributes["rich:dragdndparams"];
- var dndParams;
-
+if (!DnD.getDnDDefaultParams) {
+ DnD.getDnDDefaultParams = function(elt) {
+ var attr = elt.attributes["rich:defaultdndparams"];
+
if (attr) {
- dndParams = attr.value.parseJSON();
+ return attr.value.parseJSON();
}
+
+ return null;
+ };
+}
- attr = elt.attributes["rich:defaultdndparams"];
+DnD.getDnDDragParams = function(elt) {
+ var params = DnD.getDnDDefaultParams(elt);
- if (attr) {
+ var attr = elt.attributes["rich:dragdndparams"];
+
+ if (attr) {
+ var dndParams = attr.value.parseJSON();
+ if (params) {
if (dndParams) {
- Object.extend(dndParams, attr.value.parseJSON());
- } else {
- dndParams = attr.value.parseJSON();
+ Object.extend(params, dndParams);
}
+ } else {
+ params = dndParams;
}
+ }
- return dndParams;
+ return params;
+};
+
+DnD.Draggable.prototype = {
+
+ getElement: function() {
+ return $(this.id);
},
+ getDnDDefaultParams: function() {
+ return DnD.getDnDDefaultParams(this.getElement());
+ },
+
+ getDnDDragParams: function() {
+ return DnD.getDnDDragParams(this.getElement());
+ },
+
/**
* @return type of draggable content
*/
@@ -61,7 +79,7 @@
var indicator = this.getIndicator();
if (indicator) {
- var dndParams = this.getDnDParams();
+ var dndParams = this.getDnDDragParams();
if (this.getDraggableItems && this.getDraggableItems() > 1) {
if (!dndParams) {
Modified: trunk/richfaces/common/src/main/resources/org/richfaces/renderkit/html/scripts/dnd/dnd-dropzone.js
===================================================================
--- trunk/richfaces/common/src/main/resources/org/richfaces/renderkit/html/scripts/dnd/dnd-dropzone.js 2007-03-06 20:23:23 UTC (rev 25)
+++ trunk/richfaces/common/src/main/resources/org/richfaces/renderkit/html/scripts/dnd/dnd-dropzone.js 2007-03-06 20:27:54 UTC (rev 26)
@@ -4,35 +4,53 @@
* Base class for drop zones
*/
DnD.Dropzone = function(){};
-DnD.Dropzone.DROP_TARGET_ID = "dropTargetId";
-DnD.Dropzone.prototype = {
- getElement: function() {
- return $(this.id);
- },
-
- getDnDParams: function() {
- var elt = this.getElement();
- var attr = elt.attributes["rich:dropdndparams"];
- var dndParams;
-
+if (!DnD.getDnDDefaultParams) {
+ DnD.getDnDDefaultParams = function(elt) {
+ var attr = elt.attributes["rich:defaultdndparams"];
+
if (attr) {
- dndParams = attr.value.parseJSON();
+ return attr.value.parseJSON();
}
+
+ return null;
+ };
+}
- attr = elt.attributes["rich:defaultdndparams"];
+DnD.getDnDDropParams = function(elt) {
+ var params = DnD.getDnDDefaultParams(elt);
- if (attr) {
+ var attr = elt.attributes["rich:dropdndparams"];
+
+ if (attr) {
+ var dndParams = attr.value.parseJSON();
+ if (params) {
if (dndParams) {
- Object.extend(dndParams, attr.value.parseJSON());
- } else {
- dndParams = attr.value.parseJSON();
+ Object.extend(params, dndParams);
}
+ } else {
+ params = dndParams;
}
+ }
- return dndParams;
+ return params;
+};
+
+DnD.Dropzone.DROP_TARGET_ID = "dropTargetId";
+DnD.Dropzone.prototype = {
+
+ getElement: function() {
+ return $(this.id);
},
+ getDnDDefaultParams: function() {
+ return DnD.getDnDDefaultParams(this.getElement());
+ },
+
+ getDnDDropParams: function() {
+ return DnD.getDnDDropParams(this.getElement());
+ },
+
/**
*
* @param {Object} drag
@@ -70,11 +88,11 @@
if (indicator) {
var icon = this.getIconCodeForType(drag.type);
- var dndParams = drag.source.getDnDParams();
+ var dndParams = drag.source.getDnDDragParams();
if (dndParams) {
- Object.extend(dndParams, this.getDnDParams());
+ Object.extend(dndParams, this.getDnDDropParams());
} else {
- dndParams = this.getDnDParams();
+ dndParams = this.getDnDDropParams();
}
if (dndParams) {
Modified: trunk/richfaces/drag-drop/src/main/java/org/richfaces/renderkit/DnDEventsExchangeMailer.java
===================================================================
--- trunk/richfaces/drag-drop/src/main/java/org/richfaces/renderkit/DnDEventsExchangeMailer.java 2007-03-06 20:23:23 UTC (rev 25)
+++ trunk/richfaces/drag-drop/src/main/java/org/richfaces/renderkit/DnDEventsExchangeMailer.java 2007-03-06 20:27:54 UTC (rev 26)
@@ -121,14 +121,14 @@
draggable = (Draggable) target;
dropzone = (Dropzone) component;
- acceptedTypes = eventInfo.type;
- dragType = type;
+ acceptedTypes = type;
+ dragType = eventInfo.type;
} else {
draggable = (Draggable) component;
dropzone = (Dropzone) target;
- acceptedTypes = type;
- dragType = eventInfo.type;
+ acceptedTypes = eventInfo.type;
+ dragType = type;
}
DnDValidator.validateAcceptTypes(facesContext, draggable, dropzone, acceptedTypes, dragType);
Modified: trunk/richfaces/drag-drop/src/main/resources/org/richfaces/renderkit/html/scripts/simple-draggable.js
===================================================================
--- trunk/richfaces/drag-drop/src/main/resources/org/richfaces/renderkit/html/scripts/simple-draggable.js 2007-03-06 20:23:23 UTC (rev 25)
+++ trunk/richfaces/drag-drop/src/main/resources/org/richfaces/renderkit/html/scripts/simple-draggable.js 2007-03-06 20:27:54 UTC (rev 26)
@@ -13,7 +13,7 @@
//Event.observe(this.id, "mousedown", this.eventMouseDown);
},
- getDnDParams: function() {
+ getDnDDragParams: function() {
if (this.options.dndParams) {
return this.options.dndParams.parseJSON();
}
Modified: trunk/richfaces/drag-drop/src/main/resources/org/richfaces/renderkit/html/scripts/simple-dropzone.js
===================================================================
--- trunk/richfaces/drag-drop/src/main/resources/org/richfaces/renderkit/html/scripts/simple-dropzone.js 2007-03-06 20:23:23 UTC (rev 25)
+++ trunk/richfaces/drag-drop/src/main/resources/org/richfaces/renderkit/html/scripts/simple-dropzone.js 2007-03-06 20:27:54 UTC (rev 26)
@@ -29,7 +29,7 @@
},
- getDnDParams: function() {
+ getDnDDropParams: function() {
if (this.options.dndParams) {
return this.options.dndParams.parseJSON();
}
Modified: trunk/richfaces/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java
===================================================================
--- trunk/richfaces/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java 2007-03-06 20:23:23 UTC (rev 25)
+++ trunk/richfaces/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java 2007-03-06 20:27:54 UTC (rev 26)
@@ -30,6 +30,7 @@
import org.richfaces.component.state.events.CollapseNodeCommandEvent;
import org.richfaces.component.state.events.ExpandNodeCommandEvent;
import org.richfaces.component.util.ViewUtil;
+import org.richfaces.renderkit.DnDParametersEncoder;
/**
* @author Nick - mailto:nbelaevski@exadel.com created 23.11.2006
@@ -64,6 +65,8 @@
addContributor(DropzoneRendererContributor.getInstance());
addContributor(DraggableRendererContributor.getInstance());
+
+ addParameterEncoder(DnDParametersEncoder.getInstance());
}
protected String getToggleScript(FacesContext context, UITreeNode treeNode) {
Modified: trunk/richfaces/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree-item-dnd.js
===================================================================
--- trunk/richfaces/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree-item-dnd.js 2007-03-06 20:23:23 UTC (rev 25)
+++ trunk/richfaces/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree-item-dnd.js 2007-03-06 20:27:54 UTC (rev 26)
@@ -7,6 +7,12 @@
* Dropzone interface
*/
Object.extend(Tree.Item.prototype, DnD.Dropzone.prototype);
+
+/**
+ * Draggable Interface
+ */
+Object.extend(Tree.Item.prototype, DnD.Draggable.prototype);
+
Object.extend(Tree.Item.prototype, {
getAcceptedTypes: function() {
var opts = this.getDropzoneOptions();
@@ -20,6 +26,33 @@
return [];
},
+ mergeParams: function(func) {
+ var treeParam = func(this.tree.getElement());
+ var nodeParam = func(this.getElement());
+
+ if (treeParam) {
+ if (nodeParam) {
+ Object.extend(treeParam, nodeParam);
+ }
+
+ return treeParam;
+ } else {
+ return nodeParam;
+ }
+ },
+
+ getDnDDefaultParams: function() {
+ return this.mergeParams(DnD.getDnDDefaultParams);
+ },
+
+ getDnDDragParams: function() {
+ return this.mergeParams(DnD.getDnDDragParams);
+ },
+
+ getDnDDropParams: function() {
+ return this.mergeParams(DnD.getDnDDropParams);
+ },
+
getDropzoneOptions: function() {
var attr = this.elements.icon.attributes["rich:dropzoneoptions"];
if (attr) {
@@ -42,13 +75,8 @@
}
this.tree.drop(event, drag);
- }
-});
-/**
- * Draggable Interface
- */
-Object.extend(Tree.Item.prototype, DnD.Draggable.prototype);
-Object.extend(Tree.Item.prototype, {
+ },
+
getIndicator: function() {
var indicator = $(this.tree.dragIndicatorId);
if (!indicator) {
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-03-06 20:23:23 UTC (rev 25)
+++ trunk/richfaces/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree.js 2007-03-06 20:27:54 UTC (rev 26)
@@ -156,6 +156,10 @@
} else if (nodeBottom > visibleBottom) {
this.element.scrollTop = nodeBottom - this.element.clientHeight;
}
+ },
+
+ getElement: function() {
+ return $(this.id);
}
}
Modified: trunk/richfaces/tree/src/main/templates/htmlTreeNode.jspx
===================================================================
--- trunk/richfaces/tree/src/main/templates/htmlTreeNode.jspx 2007-03-06 20:23:23 UTC (rev 25)
+++ trunk/richfaces/tree/src/main/templates/htmlTreeNode.jspx 2007-03-06 20:27:54 UTC (rev 26)
@@ -33,6 +33,7 @@
<f:call name="initializeResources" />
<tr>
+ <f:call name="encodeAttributeParameters" />
<td class="dr-tree-h-ic #{line}">
<jsp:scriptlet>
<![CDATA[
Modified: trunk/richfaces-samples/tree-demo/src/main/webapp/pages/index.jsp
===================================================================
--- trunk/richfaces-samples/tree-demo/src/main/webapp/pages/index.jsp 2007-03-06 20:23:23 UTC (rev 25)
+++ trunk/richfaces-samples/tree-demo/src/main/webapp/pages/index.jsp 2007-03-06 20:27:54 UTC (rev 26)
@@ -27,6 +27,12 @@
<h:form>
+ <dnd:dragIndicator id="treeIndicator">
+ <f:facet name="single">
+ <f:verbatim>{marker} <br /> {treeParam} <br /> {nodeParam}</f:verbatim>
+ </f:facet>
+ </dnd:dragIndicator>
+
<h:selectOneRadio binding="#{skinBean.component}" />
<h:commandLink action="#{skinBean.change}" value="set skin" />
<br />
@@ -43,7 +49,6 @@
<rich:tree id="tree" switchType="#{bean.switchType}"
value="#{bean.data}" var="data"
- acceptedTypes="valueNode"
nodeFace="#{data.name != 'param-value' ? 'input' : 'text'}"
changeExpandListener="#{bean.onExpand}"
nodeSelectListener="#{bean.onSelect}" binding="#{bean.tree}"
@@ -52,26 +57,37 @@
oncollapse="window.status='collapsedNode: '+event.collapsedNode"
ajaxSubmitSelection="true" reRender="outputText, selectOneListbox"
preserveModel="state"
- dragType="node"
+ dragIndicator="treeIndicator"
+
+ acceptedTypes="file1"
+ dragType="file1"
+
iconCollapsed="#{bean.iconCollapsed}"
iconExpanded="#{bean.iconExpanded}"
iconLeaf="#{bean.iconLeaf}"
icon="#{bean.icon}"
- >
+ dropListener="#{bean.processDrop}">
- <dnd:dndParam name="test" value="testValue" />
+ <dnd:dndParam name="treeParam" value="Tree Parameter" />
+ <dnd:dndParam name="accept" value="accept" />
- <rich:treeNode type="input" dragType="valueNode" acceptedTypes="valueNode" dropListener="#{bean.processDrop}">
+ <rich:treeNode type="input" dropListener="#{bean.processDrop}">
<h:outputText value="#{data} : " />
<h:inputText value="#{data.name}" required="true" styleClass="inputs">
</h:inputText>
+
+ <dnd:dndParam name="nodeParam" value="Node Parameter" />
+
</rich:treeNode>
- <rich:treeNode type="text" nodeClass="customNode">
+ <rich:treeNode type="text" nodeClass="customNode" acceptedTypes="file2">
<h:outputText value="#{data}" />
</rich:treeNode>
</rich:tree>
</h:form>
+
+ <a4j:status startText="...start..." />
+
</f:view>
</body>
</html>