summaryrefslogtreecommitdiff
path: root/js/dojo-1.7.2/dojox/mdnd/DropIndicator.js
blob: ff2ca6b81e3ebcb58738e0e48cef82e71308e5f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//>>built
define("dojox/mdnd/DropIndicator", ["dojo/_base/kernel","dojo/_base/declare","dojo/_base/html","./AreaManager"],function(dojo){
	var di = dojo.declare(
		"dojox.mdnd.DropIndicator",
		null,
	{
		// summary:
		//		DropIndicator managment for DnD.
	
		// node: DOMNode
		//		the drop indicator node
		node : null,
			
		constructor: function(){
			//console.log("dojox.mdnd.DropIndicator ::: constructor");
			var dropIndicator = document.createElement("div");
			var subDropIndicator = document.createElement("div");
			dropIndicator.appendChild(subDropIndicator);
			dojo.addClass(dropIndicator, "dropIndicator");
			this.node = dropIndicator;
		},
		
		place: function(/*Node*/area, /*Node*/nodeRef, /*Object*/size){
			// summary:
			//		Place the DropIndicator in the right place
			// area:
			//		the dnd targer area node
			// nodeRef:
			//		node where the dropIndicator have to be placed into the area
			// dragNode:
			//		the node which is dragged
			// returns:
			//		the node inserted or null if it crashes
	
			//console.log("dojox.mdnd.DropIndicator ::: place");
			if(size){
				this.node.style.height = size.h + "px";
			}
			try{
				if(nodeRef){
					area.insertBefore(this.node, nodeRef);
				}
				else{
					// empty target area or last node => appendChild
					area.appendChild(this.node);
				}
				return this.node;	// DOMNode
			}catch(e){
				return null;
			}
		},
		
		remove: function(){
			// summary:
			//		remove the DropIndicator (not destroy)
	
			//console.log("dojox.mdnd.DropIndicator ::: remove");
			if(this.node){
				//FIX : IE6 problem
				this.node.style.height = "";
				if(this.node.parentNode){
					this.node.parentNode.removeChild(this.node);
				}
			}
		},
		 
		destroy: function(){
			// summary:
			//		destroy the dropIndicator
	
			//console.log("dojox.mdnd.DropIndicator ::: destroy");
			if(this.node){
				if(this.node.parentNode){
					this.node.parentNode.removeChild(this.node);
				}
				dojo._destroyElement(this.node);
				delete this.node;
			}
		}
	});

	dojox.mdnd.areaManager()._dropIndicator = new dojox.mdnd.DropIndicator();
	
	return di;
});