summaryrefslogtreecommitdiff
path: root/includes/js/dojo/dnd/Manager.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojo/dnd/Manager.js')
-rw-r--r--includes/js/dojo/dnd/Manager.js180
1 files changed, 0 insertions, 180 deletions
diff --git a/includes/js/dojo/dnd/Manager.js b/includes/js/dojo/dnd/Manager.js
deleted file mode 100644
index 8044b42..0000000
--- a/includes/js/dojo/dnd/Manager.js
+++ /dev/null
@@ -1,180 +0,0 @@
-if(!dojo._hasResource["dojo.dnd.Manager"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojo.dnd.Manager"] = true;
-dojo.provide("dojo.dnd.Manager");
-
-dojo.require("dojo.dnd.common");
-dojo.require("dojo.dnd.autoscroll");
-dojo.require("dojo.dnd.Avatar");
-
-dojo.declare("dojo.dnd.Manager", null, {
- // summary: the manager of DnD operations (usually a singleton)
- constructor: function(){
- this.avatar = null;
- this.source = null;
- this.nodes = [];
- this.copy = true;
- this.target = null;
- this.canDropFlag = false;
- this.events = [];
- },
-
- // avatar's offset from the mouse
- OFFSET_X: 16,
- OFFSET_Y: 16,
-
- // methods
- overSource: function(source){
- // summary: called when a source detected a mouse-over conditiion
- // source: Object: the reporter
- if(this.avatar){
- this.target = (source && source.targetState != "Disabled") ? source : null;
- this.avatar.update();
- }
- dojo.publish("/dnd/source/over", [source]);
- },
- outSource: function(source){
- // summary: called when a source detected a mouse-out conditiion
- // source: Object: the reporter
- if(this.avatar){
- if(this.target == source){
- this.target = null;
- this.canDropFlag = false;
- this.avatar.update();
- dojo.publish("/dnd/source/over", [null]);
- }
- }else{
- dojo.publish("/dnd/source/over", [null]);
- }
- },
- startDrag: function(source, nodes, copy){
- // summary: called to initiate the DnD operation
- // source: Object: the source which provides items
- // nodes: Array: the list of transferred items
- // copy: Boolean: copy items, if true, move items otherwise
- this.source = source;
- this.nodes = nodes;
- this.copy = Boolean(copy); // normalizing to true boolean
- this.avatar = this.makeAvatar();
- dojo.body().appendChild(this.avatar.node);
- dojo.publish("/dnd/start", [source, nodes, this.copy]);
- this.events = [
- dojo.connect(dojo.doc, "onmousemove", this, "onMouseMove"),
- dojo.connect(dojo.doc, "onmouseup", this, "onMouseUp"),
- dojo.connect(dojo.doc, "onkeydown", this, "onKeyDown"),
- dojo.connect(dojo.doc, "onkeyup", this, "onKeyUp")
- ];
- var c = "dojoDnd" + (copy ? "Copy" : "Move");
- dojo.addClass(dojo.body(), c);
- },
- canDrop: function(flag){
- // summary: called to notify if the current target can accept items
- var canDropFlag = Boolean(this.target && flag);
- if(this.canDropFlag != canDropFlag){
- this.canDropFlag = canDropFlag;
- this.avatar.update();
- }
- },
- stopDrag: function(){
- // summary: stop the DnD in progress
- dojo.removeClass(dojo.body(), "dojoDndCopy");
- dojo.removeClass(dojo.body(), "dojoDndMove");
- dojo.forEach(this.events, dojo.disconnect);
- this.events = [];
- this.avatar.destroy();
- this.avatar = null;
- this.source = null;
- this.nodes = [];
- },
- makeAvatar: function(){
- // summary: makes the avatar, it is separate to be overwritten dynamically, if needed
- return new dojo.dnd.Avatar(this);
- },
- updateAvatar: function(){
- // summary: updates the avatar, it is separate to be overwritten dynamically, if needed
- this.avatar.update();
- },
- // mouse event processors
- onMouseMove: function(e){
- // summary: event processor for onmousemove
- // e: Event: mouse event
- var a = this.avatar;
- if(a){
- //dojo.dnd.autoScrollNodes(e);
- dojo.dnd.autoScroll(e);
- var s = a.node.style;
- s.left = (e.pageX + this.OFFSET_X) + "px";
- s.top = (e.pageY + this.OFFSET_Y) + "px";
- var copy = Boolean(this.source.copyState(dojo.dnd.getCopyKeyState(e)));
- if(this.copy != copy){
- this._setCopyStatus(copy);
- }
- }
- },
- onMouseUp: function(e){
- // summary: event processor for onmouseup
- // e: Event: mouse event
- if(this.avatar && (!("mouseButton" in this.source) || this.source.mouseButton == e.button)){
- if(this.target && this.canDropFlag){
- var params = [this.source, this.nodes, Boolean(this.source.copyState(dojo.dnd.getCopyKeyState(e))), this.target];
- dojo.publish("/dnd/drop/before", params);
- dojo.publish("/dnd/drop", params);
- }else{
- dojo.publish("/dnd/cancel");
- }
- this.stopDrag();
- }
- },
- // keyboard event processors
- onKeyDown: function(e){
- // summary: event processor for onkeydown:
- // watching for CTRL for copy/move status, watching for ESCAPE to cancel the drag
- // e: Event: keyboard event
- if(this.avatar){
- switch(e.keyCode){
- case dojo.keys.CTRL:
- var copy = Boolean(this.source.copyState(true));
- if(this.copy != copy){
- this._setCopyStatus(copy);
- }
- break;
- case dojo.keys.ESCAPE:
- dojo.publish("/dnd/cancel");
- this.stopDrag();
- break;
- }
- }
- },
- onKeyUp: function(e){
- // summary: event processor for onkeyup, watching for CTRL for copy/move status
- // e: Event: keyboard event
- if(this.avatar && e.keyCode == dojo.keys.CTRL){
- var copy = Boolean(this.source.copyState(false));
- if(this.copy != copy){
- this._setCopyStatus(copy);
- }
- }
- },
- // utilities
- _setCopyStatus: function(copy){
- // summary: changes the copy status
- // copy: Boolean: the copy status
- this.copy = copy;
- this.source._markDndStatus(this.copy);
- this.updateAvatar();
- dojo.removeClass(dojo.body(), "dojoDnd" + (this.copy ? "Move" : "Copy"));
- dojo.addClass(dojo.body(), "dojoDnd" + (this.copy ? "Copy" : "Move"));
- }
-});
-
-// summary: the manager singleton variable, can be overwritten, if needed
-dojo.dnd._manager = null;
-
-dojo.dnd.manager = function(){
- // summary: returns the current DnD manager, creates one if it is not created yet
- if(!dojo.dnd._manager){
- dojo.dnd._manager = new dojo.dnd.Manager();
- }
- return dojo.dnd._manager; // Object
-};
-
-}