Subversion Repositories wimsdev

Rev

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 p = dynapi.setPrototype('DragEvent','MouseEvent');
15
var protoDrag = dynapi.setPrototype('DragEvent','MouseEvent');
16
p.getX=function() {return this.x};
16
protoDrag.getX=function() {return this.x};
17
p.getY=function() {return this.y};
17
protoDrag.getY=function() {return this.y};
18
p.getPageX=function() {return this.pageX};
18
protoDrag.getPageX=function() {return this.pageX};
19
p.getPageY=function() {return this.pageY};
19
protoDrag.getPageY=function() {return this.pageY};
20
p.cancelDrag=function() {this.isDragging=false};
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
};