Author: jmorliaguet
Date: Sun Mar 12 16:14:52 2006
New Revision: 2617

Modified:
   cpsskins/branches/jmo-perspectives/ui/framework/cpsskins.js
   
cpsskins/branches/jmo-perspectives/ui/framework/tests/functional/cpsskins_dragdrop_test.html
Log:

- DnD fixes, test updates



Modified: cpsskins/branches/jmo-perspectives/ui/framework/cpsskins.js
==============================================================================
--- cpsskins/branches/jmo-perspectives/ui/framework/cpsskins.js (original)
+++ cpsskins/branches/jmo-perspectives/ui/framework/cpsskins.js Sun Mar 12 
16:14:52 2006
@@ -597,9 +597,11 @@
     this.cancelEvent = new Function("return false");
 
     var dropzones = this._dropzones = [];
-    (this.def.dropping.targets || []).each(function(d) {
-      $$(d).each(function(el) { dropzones.push(el); });
-    });
+    if (this.def.dropping) {
+      (this.def.dropping.targets || []).each(function(d) {
+        $$(d).each(function(el) { dropzones.push(el); });
+      });
+    }
 
     // cancel text selection
     document.onmousedown = this.cancelEvent;
@@ -640,21 +642,31 @@
     if (!draggable) {
       return false;
     }
-    if (this.def.dragging.clone) {
+    if (this.def.dragging.feedback) {
       var dim = draggable.getDimensions();
-      var clone = CPSSkins.Canvas.createNode({"tag": "div"});
-      clone.setStyle({
+      var feedback = CPSSkins.Canvas.createNode({"tag": "div"});
+      feedback.setStyle({
         'z-index': parseInt(draggable.getStyle('z-index') || 0) +1,
         'position': 'absolute',
-        'width': '' + dim.width + 'px',
-        'height': '' + dim.height + 'px'
+        'width': dim.width + 'px',
+        'height': dim.height + 'px'
       });
-      clone.appendChild(draggable.cloneNode(true));
-      clone.setOpacity(this.def.dragging.clone.opacity);
-      draggable.parentNode.insertBefore(clone, draggable);
-      this.moved = clone;
+      if (this.def.dragging.feedback.clone) {
+        feedback.appendChild(draggable.cloneNode(true));
+      } else {
+        feedback.setStyle({
+          'border-color': this.def.dragging.feedback.border || '#000',
+          'background-color': this.def.dragging.feedback.background || '#fc3',
+          'border-style': 'solid',
+          'border-width': '1px'
+        })
+      }
+      feedback.setOpacity(this.def.dragging.feedback.opacity);
+      draggable.parentNode.insertBefore(feedback, draggable);
+      this.moved = feedback;
     } else {
       this.moved = draggable;
+      this.moved.setStyle({'position': 'absolute'});
     }
     var pos = Position.cumulativeOffset(this.moved);
     this.x0 = pos[0];
@@ -664,20 +676,24 @@
     Event.observe(document, "mousemove", this.moveEvent);
     Event.observe(document, "mouseup", this.dropEvent);
 
-    var highlight = this.def.dropping.highlight;
-    if (highlight) {
-      this._dropzones.each(function(el) {
-        CPSSkins.Effects.activate(el,
-          {'duration': highlight.duration || 1000}
-        );
-      });
+    if (this.def.dropping) {
+      var highlight = this.def.dropping.highlight;
+      if (highlight) {
+        this._dropzones.each(function(el) {
+          CPSSkins.Effects.activate(el,
+            {'duration': highlight.duration || 1000}
+          );
+        });
+      }
     }
+    Event.stop(e);
   },
 
   moveEvent: function(e) {
     var x = Event.pointerX(e);
     var y = Event.pointerY(e);
     this.moved.moveTo({'x': x-this.x1, 'y': y-this.y1});
+    Event.stop(e);
   },
 
   dropEvent: function(e) {
@@ -699,7 +715,7 @@
       alert('NotImplemented');
     }
 
-    if (this.def.dragging.clone) {
+    if (this.def.dragging.feedback) {
       if (revert) {
         this.moved.moveTo({
           'x': this.x0,
@@ -712,14 +728,17 @@
       }
     }
 
-    var highlight = this.def.dropping.highlight;
-    if (highlight) {
-      this._dropzones.each(function(el) {
-        CPSSkins.Effects.deactivate(el,
-          {'duration': highlight.duration || 1000}
-        );
-      });
+    if (this.def.dropping) {
+      var highlight = this.def.dropping.highlight;
+      if (highlight) {
+        this._dropzones.each(function(el) {
+          CPSSkins.Effects.deactivate(el,
+            {'duration': highlight.duration || 1000}
+          );
+        });
+      }
     }
+    Event.stop(e);
   }
 
 });
@@ -1139,7 +1158,7 @@
       action: function(value) {
         node.setBackgroundColor({'r': bg.r, 'g': bg.g, 'b': bg.b-(1-value)});
       },
-      onComplete: function() { node.setBgColor(bg) }
+      onComplete: function() { node.setBackgroundColor(bg) }
     });
     return new CPSSkins.Scheduler(options);
   }

Modified: 
cpsskins/branches/jmo-perspectives/ui/framework/tests/functional/cpsskins_dragdrop_test.html
==============================================================================
--- 
cpsskins/branches/jmo-perspectives/ui/framework/tests/functional/cpsskins_dragdrop_test.html
        (original)
+++ 
cpsskins/branches/jmo-perspectives/ui/framework/tests/functional/cpsskins_dragdrop_test.html
        Sun Mar 12 16:14:52 2006
@@ -12,7 +12,7 @@
   <link rel="stylesheet" href="../../cpsskins.css" type="text/css" />
 
   <style stype="text/css">
-  div.drag {
+  div.dragdrop {
     background-color: #efc;
     border: 1px solid #999;
     padding: 1em;
@@ -20,17 +20,37 @@
     margin: 10px;
   }
   div.drop {
-    background-color: #ffe;
-    border: 1px solid #999;
+    background-color: #fff;
+    border: 1px dotted #666;
     padding: 2em;
-    width: 200px;
+    width: 190px;
     margin: 10px;
+    height: 40px;
   }
   #dragthis {
     padding: 1em;
     border: 1px solid #fc0;
     background-color: #ffc;
   }
+  #movethis {
+    padding: 1em;
+    border: 1px solid #006;
+    background-color: #fdf;
+    width: 120px;
+    margin: 10px;
+  }
+  #drophere {
+    background-color: #fff;
+    border: 1px dotted #666;
+    padding: 2em;
+    width: 190px;
+    margin: 10px;
+    height: 40px;
+  }
+  #dragthis {
+    padding: 1em;
+    border: 1px solid #fc0;
+  }
   </style>
 
 </head>
@@ -38,9 +58,7 @@
 
   <h1>CPSSkins: drag-and-drop</h1>
 
-  <div class="drag">DRAG ME</div>
-
-  <div class="drag">DRAG ME
+  <div class="dragdrop">DRAG-AND-DROP ME
     <div id="dragthis">DRAG ME</div>
   </div>
 
@@ -51,9 +69,10 @@
    "type": "drag-and-drop",
    "action": "displayInfo",
    "dragging": {
-     "sources": ["div.drag", "#dragthis"],
-     "clone": {
-       "opacity": 0.8
+     "sources": ["div.dragdrop"],
+     "feedback": {
+       "opacity": 0.8,
+       "clone": true
      },
      "revert": {
        "duration": 500
@@ -67,6 +86,37 @@
   }}
   </ins>
 
+  <ins class="controller">
+  {"id": "dnd2",
+   "type": "drag-and-drop",
+   "action": "displayInfo",
+   "dragging": {
+     "sources": ["#dragthis"],
+     "feedback": {
+       "opacity": 0.8,
+       "border": "#000",
+       "background": "#fc3"
+     }
+   }
+  }}
+  </ins>
+
+  <ins class="controller">
+  {"id": "dnd3",
+   "type": "drag-and-drop",
+   "action": "displayInfo",
+   "dragging": {
+     "sources": ["#movethis"]
+   },
+   "dropping": {
+     "targets": ["#drophere"],
+     "highlight": {
+       "duration": 800
+     }
+   }
+  }
+  </ins>
+
   <ins class="model">
   {"id": "dummy"}
   </ins>
@@ -77,10 +127,16 @@
      "template": "draggable.html"
    },
    "model": "dummy",
-   "controllers": ["dnd"]
+   "controllers": ["dnd", "dnd2", "dnd3"]
   }
   </ins>
 
+  <div class="drop">DROP ZONE</div>
+
+  <div id="drophere">DROP ME HERE</div>
+
+  <div id="movethis">MOVE ME</div>
+
   <script type="text/javascript">
     function displayInfo(event) {
     }
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to