Rev 20 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 20 | Rev 11524 | ||
---|---|---|---|
Line 10... | Line 10... | ||
10 | this.MouseEvent = MouseEvent; |
10 | this.MouseEvent = MouseEvent; |
11 | this.MouseEvent(); |
11 | this.MouseEvent(); |
12 | this.DynEvent() |
12 | this.DynEvent() |
13 | this.isDragging = false; |
13 | this.isDragging = false; |
14 | } |
14 | } |
15 | var |
15 | var protoDrag = dynapi.setPrototype('DragEvent','MouseEvent'); |
16 |
|
16 | protoDrag.getX=function() {return this.x}; |
17 |
|
17 | protoDrag.getY=function() {return this.y}; |
18 |
|
18 | protoDrag.getPageX=function() {return this.pageX}; |
19 |
|
19 | protoDrag.getPageY=function() {return this.pageY}; |
20 |
|
20 | protoDrag.cancelDrag=function() {this.isDragging=false}; |
21 | 21 | ||
22 | //DragEvent.dragPlay=0; |
22 | //DragEvent.dragPlay=0; |
23 | 23 | ||
24 | DragEvent.dragevent = new DragEvent(); |
24 | DragEvent.dragevent = new DragEvent(); |
25 | 25 | ||
Line 31... | Line 31... | ||
31 | }; |
31 | }; |
32 | 32 | ||
33 | DragEvent.startDrag = function(e,dlyr) { |
33 | DragEvent.startDrag = function(e,dlyr) { |
34 | var origdlyr = dlyr; |
34 | var origdlyr = dlyr; |
35 | if (!dlyr) dlyr = e.getSource(); |
35 | if (!dlyr) dlyr = e.getSource(); |
36 | 36 | ||
37 | if (dynapi.ua.dom) { |
37 | if (dynapi.ua.dom) { |
38 | dlyr.elm.ondragstart = function() { return false; } |
38 | dlyr.elm.ondragstart = function() { return false; } |
39 | dlyr.elm.onselectstart = function() { return false; } |
39 | dlyr.elm.onselectstart = function() { return false; } |
40 | } |
40 | } |
41 | 41 | ||
42 | // Initialize dragEvent object |
42 | // Initialize dragEvent object |
43 | var de=DragEvent.dragevent; |
43 | var de=DragEvent.dragevent; |
44 | //de.bubble = true; |
44 | //de.bubble = true; |
45 | de.src = dlyr; |
45 | de.src = dlyr; |
46 | de.origin = (origdlyr)? e.origin : dlyr; |
46 | de.origin = (origdlyr)? e.origin : dlyr; |
Line 48... | Line 48... | ||
48 | de.y = e.getPageY()-dlyr.getPageY(); |
48 | de.y = e.getPageY()-dlyr.getPageY(); |
49 | de.pageX = e.getPageX(); |
49 | de.pageX = e.getPageX(); |
50 | de.pageY = e.getPageY(); |
50 | de.pageY = e.getPageY(); |
51 | de.parentPageX = dlyr.parent.getPageX(); |
51 | de.parentPageX = dlyr.parent.getPageX(); |
52 | de.parentPageY = dlyr.parent.getPageY(); |
52 | de.parentPageY = dlyr.parent.getPageY(); |
53 | 53 | ||
54 | de.isDragging = true; |
54 | de.isDragging = true; |
55 | 55 | ||
56 | e.preventDefault(); |
56 | e.preventDefault(); |
57 | e.preventBubble(); |
57 | e.preventBubble(); |
58 | 58 | ||
59 | //dlyr._dyndoc.addEventListener(DragEvent.docListener); |
59 | //dlyr._dyndoc.addEventListener(DragEvent.docListener); |
60 | 60 | ||
61 | dlyr.invokeEvent("dragstart",de); |
61 | dlyr.invokeEvent("dragstart",de); |
62 | } |
62 | } |
63 | 63 | ||
64 | DragEvent.docListener = { |
64 | DragEvent.docListener = { |
65 | onmousemove : function(e) { |
65 | onmousemove : function(e) { |
66 | //var x = e.getPageX(); |
66 | //var x = e.getPageX(); |
67 | //var y = e.getPageY(); |
67 | //var y = e.getPageY(); |
68 | //dynapi.debug.status('drag move '+e.x+' '+e.y); |
68 | //dynapi.debug.status('drag move '+e.x+' '+e.y); |
69 | 69 | ||
70 | var de = DragEvent.dragevent; |
70 | var de = DragEvent.dragevent; |
71 | if (de && de.isDragging) { |
71 | if (de && de.isDragging) { |
72 | - | ||
73 | - | ||
74 | var lyr = de.src; |
72 | var lyr = de.src; |
75 | if (!lyr) return; |
73 | if (!lyr) return; |
76 | 74 | ||
77 | // DS: what is this? |
75 | // DS: what is this? |
78 | // Detect if we should start the drag |
76 | // Detect if we should start the drag |
79 | /*if(DragEvent.dragPlay==0 || (Math.abs(de.pageX-e.getPageX())-DragEvent.dragPlay>0) || (Math.abs(de.pageY-e.getPageY())-DragEvent.dragPlay>0)) { |
77 | /*if(DragEvent.dragPlay==0 || (Math.abs(de.pageX-e.getPageX())-DragEvent.dragPlay>0) || (Math.abs(de.pageY-e.getPageY())-DragEvent.dragPlay>0)) { |
80 | de.isDragging=true; |
78 | de.isDragging=true; |
81 | de.src.invokeEvent("dragstart",de); |
79 | de.src.invokeEvent("dragstart",de); |
82 | e.setBubble(de.bubble); |
80 | e.setBubble(de.bubble); |
83 | } |
81 | } |
84 | */ |
82 | */ |
85 | /*else if (!de.dragEnabled) { |
83 | /*else if (!de.dragEnabled) { |
86 | // This allows 'cancelDrag' method to fire the mouseUp as if had been released by the user |
84 | // This allows 'cancelDrag' method to fire the mouseUp as if had been released by the user |
87 | lyr.invokeEvent("mouseup"); |
85 | lyr.invokeEvent("mouseup"); |
88 | return; |
86 | return; |
89 | }*/ |
87 | }*/ |
90 | 88 | ||
91 | // Properties |
89 | // Properties |
92 | de.type="dragmove"; |
90 | de.type="dragmove"; |
93 | de.pageX=e.getPageX(); |
91 | de.pageX=e.getPageX(); |
94 | de.pageY=e.getPageY(); |
92 | de.pageY=e.getPageY(); |
95 | 93 | ||
96 | /*if (DragEvent.stopAtDocumentEdge) { |
94 | /*if (DragEvent.stopAtDocumentEdge) { |
97 | if (de.pageX<0) de.pageX = 0; |
95 | if (de.pageX<0) de.pageX = 0; |
98 | if (de.pageY<0) de.pageY = 0; |
96 | if (de.pageY<0) de.pageY = 0; |
99 | if (de.pageX>DynAPI.document.w) de.pageX = DynAPI.document.w; |
97 | if (de.pageX>DynAPI.document.w) de.pageX = DynAPI.document.w; |
100 | if (de.pageY>DynAPI.document.h) de.pageY = DynAPI.document.h; |
98 | if (de.pageY>DynAPI.document.h) de.pageY = DynAPI.document.h; |
101 | }*/ |
99 | }*/ |
102 | 100 | ||
103 | var x=de.pageX-de.parentPageX-de.x; |
101 | var x=de.pageX-de.parentPageX-de.x; |
104 | var y=de.pageY-de.parentPageY-de.y; |
102 | var y=de.pageY-de.parentPageY-de.y; |
105 | 103 | ||
106 | // Respect boundary, if any |
104 | // Respect boundary, if any |
107 | if (lyr._dragBoundary) { |
105 | if (lyr._dragBoundary) { |
108 | var dB = lyr._dragBoundary; |
106 | var dB = lyr._dragBoundary; |
109 | var t = dB.top; |
107 | var t = dB.top; |
110 | var r = dB.right; |
108 | var r = dB.right; |
Line 129... | Line 127... | ||
129 | else if (y+h>b) y=b-h; |
127 | else if (y+h>b) y=b-h; |
130 | } |
128 | } |
131 | // Move dragged layer |
129 | // Move dragged layer |
132 | lyr.setLocation(x,y); |
130 | lyr.setLocation(x,y); |
133 | lyr.invokeEvent("dragmove",de); |
131 | lyr.invokeEvent("dragmove",de); |
134 | 132 | ||
135 | if (lyr._dragStealth==false && lyr.parent.DragOver) { |
133 | if (lyr._dragStealth==false && lyr.parent.DragOver) { |
136 | lyr.parent.DragOver(lyr); |
134 | lyr.parent.DragOver(lyr); |
137 | } |
135 | } |
138 | 136 | ||
139 | e.preventDefault(); |
137 | e.preventDefault(); |
140 | e.preventBubble(); |
138 | e.preventBubble(); |
141 | } |
139 | } |
142 | }, |
140 | }, |
143 | onmouseup : function(e) { |
141 | onmouseup : function(e) { |
Line 145... | Line 143... | ||
145 | var de=DragEvent.dragevent; |
143 | var de=DragEvent.dragevent; |
146 | //de.bubble = true; |
144 | //de.bubble = true; |
147 | if (!de) return; |
145 | if (!de) return; |
148 | var lyr=de.src; |
146 | var lyr=de.src; |
149 | if (!lyr) return; |
147 | if (!lyr) return; |
150 | 148 | ||
151 | if (!de.isDragging) { |
149 | if (!de.isDragging) { |
152 | de.type="dragend"; |
150 | de.type="dragend"; |
153 | de.src=null; |
151 | de.src=null; |
154 | //e.setBubble(true); |
152 | //e.setBubble(true); |
155 | return; |
153 | return; |
156 | } |
154 | } |
157 | if (dynapi.ua.ie) lyr.doc.body.onselectstart = null; |
155 | if (dynapi.ua.ie) lyr.doc.body.onselectstart = null; |
158 | 156 | ||
159 | // Avoid click for the dragged layer ( with MouseEvent addition ) |
157 | // Avoid click for the dragged layer ( with MouseEvent addition ) |
160 | if (dynapi.ua.def) dynapi.wasDragging=true; |
158 | if (dynapi.ua.def) dynapi.wasDragging=true; |
161 | if (lyr.parent.DragDrop) lyr.parent.DragDrop(lyr); |
159 | if (lyr.parent.DragDrop) lyr.parent.DragDrop(lyr); |
162 | // Properties for the event |
160 | // Properties for the event |
163 | de.type="dragend"; |
161 | de.type="dragend"; |
164 | de.isDragging=false; |
162 | de.isDragging=false; |
165 | lyr.invokeEvent("dragend",de); |
163 | lyr.invokeEvent("dragend",de); |
166 | 164 | ||
167 | // Clean drag stuff |
165 | // Clean drag stuff |
168 | de.src=null; |
166 | de.src=null; |
169 | //e.preventDefault(); |
167 | //e.preventDefault(); |
170 | e.preventBubble(); |
168 | e.preventBubble(); |
171 | 169 | ||
172 | //lyr._dyndoc.removeEventListener(DragEvent.docListener); |
170 | //lyr._dyndoc.removeEventListener(DragEvent.docListener); |
173 | } |
171 | } |
174 | }; |
172 | }; |
175 | DragEvent.stopAtDocumentEdge = true; |
173 | DragEvent.stopAtDocumentEdge = true; |
176 | DragEvent.setDragBoundary=function(lyr,t,r,b,l) { |
174 | DragEvent.setDragBoundary=function(lyr,t,r,b,l) { |
Line 204... | Line 202... | ||
204 | DynLayer.setDragMode = function(b,boundry){ |
202 | DynLayer.setDragMode = function(b,boundry){ |
205 | if(!self.DragEvent) return false; |
203 | if(!self.DragEvent) return false; |
206 | if(boundry)DragEvent.setDragBoundary(this,boundry); |
204 | if(boundry)DragEvent.setDragBoundary(this,boundry); |
207 | if (b) DragEvent.enableDragEvents(this); |
205 | if (b) DragEvent.enableDragEvents(this); |
208 | else DragEvent.disableDragEvents(this); |
206 | else DragEvent.disableDragEvents(this); |
209 | return true; |
207 | return true; |
210 | }; |
208 | }; |
211 | DynLayer.prototype.setDragOverStealthMode = function(b){ |
209 | DynLayer.prototype.setDragOverStealthMode = function(b){ |
212 | this._dragStealth=(b)? true:false; |
210 | this._dragStealth=(b)? true:false; |
213 | }; |
211 | }; |
214 | // Enable ondrop event |
212 | // Enable ondrop event |
215 | DynElement.prototype.DragDrop=function(s){ |
213 | DynElement.prototype.DragDrop=function(s){ |
216 | if (!this.children.length>0) return false; |
214 | if (!this.children.length>0) return false; |
217 | var ch,chX,sX,sY; |
215 | var ch,chX,sX,sY; |
218 | for (var i in this.children) { |
216 | for (var i in this.children) { |
219 | ch=this.children[i]; |
217 | ch=this.children[i]; |
220 | if(ch._hasDragEvents){ |
218 | if(ch._hasDragEvents){ |
221 | chX=ch.getPageX(); |
219 | chX=ch.getPageX(); |
222 | chY=ch.getPageY(); |
220 | chY=ch.getPageY(); |
223 | sX=s.getPageX(); |
221 | sX=s.getPageX(); |
224 | sY=s.getPageY(); |
222 | sY=s.getPageY(); |
225 | if (chX<sX && chX+ch.w>sX+s.w && chY<sY && chY+ch.h>sY+s.h) { |
223 | if (chX<sX && chX+ch.w>sX+s.w && chY<sY && chY+ch.h>sY+s.h) { |
226 | if (ch.DragDrop(s)) return true; |
224 | if (ch.DragDrop(s)) return true; |
227 | ch.invokeEvent("drop"); |
225 | ch.invokeEvent("drop"); |
228 | return true; |
226 | return true; |
229 | } |
227 | } |
230 | } |
228 | } |
231 | } |
229 | } |
232 | return false; |
230 | return false; |
233 | }; |
231 | }; |
234 | 232 | ||
235 | // Enable ondragover event |
233 | // Enable ondragover event |
236 | DynElement.prototype.DragOver=function(s){ |
234 | DynElement.prototype.DragOver=function(s){ |
237 | if (!this.children.length>0) return false; |
235 | if (!this.children.length>0) return false; |
238 | var ch,chX,sX,sY; |
236 | var ch,chX,sX,sY; |
239 | for (var i in this.children) { |
237 | for (var i in this.children) { |
240 | ch=this.children[i]; |
238 | ch=this.children[i]; |
241 | if(ch._hasDragEvents){ |
239 | if(ch._hasDragEvents){ |
242 | chX=ch.getPageX(); |
240 | chX=ch.getPageX(); |
243 | chY=ch.getPageY(); |
241 | chY=ch.getPageY(); |
244 | sX=s.getPageX(); |
242 | sX=s.getPageX(); |
245 | sY=s.getPageY(); |
243 | sY=s.getPageY(); |
246 | if (chX<sX && chX+ch.w>sX+s.w && chY<sY && chY+ch.h>sY+s.h) { |
244 | if (chX<sX && chX+ch.w>sX+s.w && chY<sY && chY+ch.h>sY+s.h) { |
247 | if (ch.DragDrop(s)) return true; |
245 | if (ch.DragDrop(s)) return true; |
248 | ch._isDragOver=true; |
246 | ch._isDragOver=true; |
249 | ch.invokeEvent("dragover"); |
247 | ch.invokeEvent("dragover"); |
250 | return true; |
248 | return true; |
251 | }else if (ch._isDragOver) { |
249 | }else if (ch._isDragOver) { |
252 | ch._isDragOver=false; |
250 | ch._isDragOver=false; |
253 | ch.invokeEvent("dragout"); |
251 | ch.invokeEvent("dragout"); |
254 | } |
252 | } |
255 | } |
253 | } |
256 | } |
254 | } |
257 | return false; |
255 | return false; |
258 | }; |
256 | }; |