Author: jmorliaguet
Date: Mon Feb 20 23:25:32 2006
New Revision: 2437
Modified:
cpsskins/branches/jmo-perspectives/ui/framework/cpsskins.js
cpsskins/branches/jmo-perspectives/ui/framework/tests/functional/cpsskins_dragdrop_test.html
cpsskins/branches/jmo-perspectives/ui/framework/tests/functional/draggable.html
cpsskins/branches/jmo-perspectives/ui/framework/tests/functional/tests.html
Log:
- there are two ways to register draggable elements:
- through css selectors (draggable: [div.drag, ...])
- explicitly by associating a drag-and-drop controller to a view
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 Mon Feb 20
23:25:32 2006
@@ -212,6 +212,7 @@
var factory = CPSSkins.Controllers[controller_type];
if (factory) {
var controller = factory(el, def);
+controller.setup();
CPSSkins._controllers[name] = controller;
CPSSkins.notify(registered controller + def.id,
{'publisher': controller});
@@ -381,6 +382,10 @@
this.def = def;
},
+ setup: function() {
+/* to override */
+ },
+
register: function(view) {
/* to override */
}
@@ -532,18 +537,28 @@
CPSSkins.DragAndDropController.prototype = Object.extend(
new CPSSkins.Controller(), {
- register: function(view) {
-var widget = view.widget;
-
+ setup: function() {
this.dragEvent = this.dragEvent.bindAsEventListener(this);
this.moveEvent = this.moveEvent.bindAsEventListener(this);
this.dropEvent = this.dropEvent.bindAsEventListener(this);
+
+var dragEvent = this.dragEvent;
+$A(this.def.draggable || []).each(function(d) {
+ $A($$(d)).each(function(el) {
+Event.observe(el, mousedown, dragEvent);
+ });
+
+});
+ },
+
+ register: function(view) {
+var widget = view.widget;
Event.observe(widget, mousedown, this.dragEvent);
},
dragEvent: function(e) {
-var widget = this.view.widget;
-var pos = Position.page(widget);
+this.moved = Event.element(e);
+var pos = Position.page(this.moved);
this.x0 = Event.pointerX(e) - pos[0];
this.y0 = Event.pointerY(e) - pos[1];
Event.observe(document, mousemove, this.moveEvent);
@@ -551,14 +566,12 @@
},
moveEvent: function(e) {
-var widget = this.view.widget;
var mouseX = Event.pointerX(e);
var mouseY = Event.pointerY(e);
-CPSSkins.Canvas.moveTo(widget, mouseX-this.x0, mouseY-this.y0);
+CPSSkins.Canvas.moveTo(this.moved, mouseX-this.x0, mouseY-this.y0);
},
dropEvent: function(e) {
-var widget = this.view.widget;
Event.stopObserving(document, mousemove, this.moveEvent);
Event.stopObserving(document, mouseup, this.dropEvent);
}
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
Mon Feb 20 23:25:32 2006
@@ -12,6 +12,12 @@
link rel=stylesheet href=../../cpsskins.css type=text/css /
style stype=text/css
+ div.drag {
+background-color: #ddc;
+border: 1px solid #999;
+padding: 1em;
+width: 200px;
+ }
/style
/head
@@ -19,9 +25,16 @@
h1CPSSkins: drag-and-drop/h1
+ div class=dragDRAG ME/div
+
+ div class=dragDRAG ME/div
+
+ div id=dragthisDRAG ME/div
+
ins class=controller
{id: dnd,
type: drag-and-drop,
+ draggable: [div.drag, #dragthis],
action: displayInfo
}
/ins
Modified:
cpsskins/branches/jmo-perspectives/ui/framework/tests/functional/draggable.html
==
---
cpsskins/branches/jmo-perspectives/ui/framework/tests/functional/draggable.html
(original)
+++
cpsskins/branches/jmo-perspectives/ui/framework/tests/functional/draggable.html
Mon Feb 20 23:25:32 2006
@@ -1,5 +1,5 @@
-div style=border: 1px solid #ccc; padding: 1em; position: absolute;
+div style=border: 1px solid #999; padding: 1em; position: absolute;
background-color: #ffc; width: 300px
DRAG ME
/div
Modified:
cpsskins/branches/jmo-perspectives/ui/framework/tests/functional/tests.html
==
--- cpsskins/branches/jmo-perspectives/ui/framework/tests/functional/tests.html
(original)
+++ cpsskins/branches/jmo-perspectives/ui/framework/tests/functional/tests.html
Mon Feb 20 23:25:32 2006
@@ -40,4 +40,8 @@
a target=main