Update of /cvsroot/dynapi/dynapi2x/src/dynapi/api/ext
In directory usw-pr-cvs1:/tmp/cvs-serv15575/src/dynapi/api/ext

Added Files:
        dragevent.js dynkeyevent.js dynlayer_inline.js 
Log Message:
Initial Import == 2.9

--- NEW FILE ---
/*
   DynAPI Distribution
   DragEvent Class

   The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
*/

// DragEvent object
function DragEvent(type,src) {
        this.inherit('DynEvent');
        this.DynEvent()
        this.isDragging = false;
}
dynapi.setPrototype('DragEvent','DynEvent');
DragEvent.prototype.getX=function() {return this.x;};
DragEvent.prototype.getY=function() {return this.y;};
DragEvent.prototype.getPageX=function() {return this.pageX;};
DragEvent.prototype.getPageY=function() {return this.pageY;};
DragEvent.prototype.cancelDrag=function() {this.isDragging=false;};
DragEvent.dragPlay=0;
DragEvent.dragevent=new DragEvent();

DragEvent.lyrListener = {
        onmousedown : function(e) {
                e.preventDefault();
                DragEvent.startDrag(e);
        }
};

DragEvent.startDrag = function(e) {
        var lyr = e.getSource();
        if (DynAPI.ua.dom) {
                lyr.elm.ondragstart = function() { return false; }
                lyr.elm.onselectstart = function() { return false; }
        }
        
        // Initialize dragEvent object
        var de=DragEvent.dragevent;
        de.type="dragstart";
        de.src=lyr;
        de.origin=e.origin;
        
        // Set properties
        de.isDragging=false;
        de.x=e.getPageX()-e.getSource().getPageX();
        de.y=e.getPageY()-e.getSource().getPageY();
        de.pageX=e.getPageX();
        de.pageY=e.getPageY();
        de.parentPageX=lyr.parent.getPageX();
        de.parentPageY=lyr.parent.getPageY();

        de.isDragging=true;
        
        lyr.invokeEvent("dragstart",de);
}

DragEvent.docListener = {
        onmousemove : function(e) {
                // Get, if any, the currently drag in process and the layer. If none, 
return
                var de = DragEvent.dragevent;
                if (!de || !de.isDragging) return;
                var lyr = de.src;
                if (!lyr) return;
        
                // DS: what is this?
                // Detect if we should start the drag
                /*if(DragEvent.dragPlay==0 || 
(Math.abs(de.pageX-e.getPageX())-DragEvent.dragPlay>0) || 
(Math.abs(de.pageY-e.getPageY())-DragEvent.dragPlay>0)) {
                        de.isDragging=true;
                        de.src.invokeEvent("dragstart",de);
                        e.setBubble(de.bubble);
                }
                */
                /*else if (!de.dragEnabled) {
                        // This allows 'cancelDrag' method to fire the mouseUp as if 
had been released by the user
                        lyr.invokeEvent("mouseup");
                        return;
                }*/
        
                // Properties
                de.type="dragmove";
                de.pageX=e.getPageX();
                de.pageY=e.getPageY();
        
                if (DragEvent.stopAtDocumentEdge) {
                        if (de.pageX<0) de.pageX = 0;
                        if (de.pageY<0) de.pageY = 0;
                        if (de.pageX>DynAPI.document.w) de.pageX = DynAPI.document.w;
                        if (de.pageY>DynAPI.document.h) de.pageY = DynAPI.document.h;
                }
                
                var x=de.pageX-de.parentPageX-de.x;
                var y=de.pageY-de.parentPageY-de.y;
        
                // Respect boundary, if any
                if (lyr._dragBoundary) {
                        var dB = lyr._dragBoundary;
                        var t = dB.top;
                        var r = dB.right;
                        var b = dB.bottom;
                        var l = dB.left
                        if (x<l) x = l;
                        else if (x>lyr.parent.w-lyr.w-r) x = lyr.parent.w-lyr.w-r;
                        if (y<t) y = t;
                        else if (y>lyr.parent.h-lyr.h-b) y = lyr.parent.h-lyr.h-b;
                }
                else if (lyr._dragBoundaryA) {
                        var dB = lyr._dragBoundaryA;
                        var b=dB[2];
                        var r=dB[1];
                        var l=dB[3];
                        var t=dB[0];
                        var w=lyr.w;
                        var h=lyr.h;
                        if (x<l) x=l;
                        else if (x+w>r) x=r-w;
                        if (y<t) y=t;
                        else if (y+h>b) y=b-h;
                }
                // Move dragged layer
                lyr.setLocation(x,y);
                lyr.invokeEvent("dragmove",de);
                e.preventDefault();
                e.preventBubble();
        },
        onmouseup : function(e) {
                // Get, if any, the currently drag in process and the layer. If none, 
return
                var de=DragEvent.dragevent;
                if (!de) return;
                var lyr=de.src;
                if (!lyr) return;
        
                if (!de.isDragging) {
                        de.type="dragend";
                        de.src=null;
                        //e.setBubble(true);
                        return;
                }
                if (DynAPI.ua.ie) lyr.doc.body.onselectstart = null;
        
                // Avoid click for the dragged layer ( with MouseEvent addition )
                if (DynAPI.ua.def) DynAPI.wasDragging=true;
                if (lyr.parent.DragDrop) lyr.parent.DragDrop(lyr); 
                // Properties for the event
                de.type="dragend";
                de.isDragging=false;
                lyr.invokeEvent("dragend",de);
        
                // Clean drag stuff
                de.src=null;
                //e.preventDefault();
                e.preventBubble();
        }
};
DragEvent.stopAtDocumentEdge = true;
DragEvent.setDragBoundary=function(lyr,t,r,b,l) {
        if (!lyr) {DynAPI.debug.print("Error: no object passed to 
DragEvent.setDragBoundary()"); return;}
        var a=arguments;
        if (a.length==0) return;
        if (a.length==1) {
                lyr._dragBoundary = {left:0,right:0,top:0,bottom:0};
        }
        if (a.length==2) {
                lyr._dragBoundary = arguments[1];
        }
        else if (a.length==5) lyr._dragBoundaryA = [t,r,b,l];
};
DragEvent.enableDragEvents=function(f) {
        for (var i=0;i<arguments.length;i++) {
                var lyr=arguments[i];
                if (!lyr) {DynAPI.debug.print("Error: no object passed to 
DragEvent.enableDragEvents()"); return;}
                if (lyr.isClass('DynLayer')) 
lyr.addEventListener(DragEvent.lyrListener);
        }
        DynAPI.document.addEventListener(DragEvent.docListener);
};
DragEvent.disableDragEvents=function() {
        for (var i=0;i<arguments.length;i++) {
                var lyr=arguments[i];
                lyr.removeEventListener(DragEvent.lyrListener);
        }
};

/*
DynObject.prototype.DragDrop=function(s){ 
        if (!this.children.length>0) return false;
        var ch,chX,sX,sY;
        for (var i in this.children) { 
                ch=this.children[i]; 
                chX=ch.getPageX();
                chY=ch.getPageY(); 
                sX=s.getPageX();
                sY=s.getPageY(); 
                if (chX<sX && chX+ch.w>sX+s.w && chY<sY && chY+ch.h>sY+s.h) { 
                        if (ch.DragDrop(s)) return true; 
                        ch.invokeEvent("drop"); 
                        return true; 
                }
        }
        return false; 
};
*/ 
--- NEW FILE ---
/*
   DynAPI Distribution
   Key Event Extensions by Henrik V�glin ([EMAIL PROTECTED])

   The DynAPI Distribution is distributed under the terms of the GNU LGPL license.

   Requirements:
        dynapi.api [dynlayer, dyndocument, browser]
        dynapi.event [listeners]
*/
function DynKeyEvent() {
        this.inherit('DynEvent');
};
var p = dynapi.setPrototype('DynKeyEvent','DynEvent');
DynKeyEvent.prototype.getKey=function() {
        return this.charKey
};
DynKeyEvent.prototype.bubbleEvent=function() {
        if (!this.bubble||this.src.isDynDocument||this.src.parent==null) return;
        this.src=this.src.parent;
        this.src.invokeEvent(this.type,this);
        this.bubbleEvent();
        return;
};
DynKeyEvent.EventMethod = function(e) {
        var dynobject=this.lyrobj;
        if(is.def) {
                if (is.ie) var e=dynobject.frame.event;
                else if (e.eventPhase!=3) return false;
        e.cancelBubble=true;
        }
        if(is.def) var realsrc = 
Methods.getContainerLayerOf(is.ie?e.srcElement:e.target)||dynobject;
        else if(is.ns4) var realsrc=e.target.lyrobj;
        if (!realsrc) return false;
        var evt=DynKeyEvent._e
        evt.type=e.type
        evt.src=realsrc;
        evt.browserReturn=true;
        evt.bubble=true;
        evt.which=(is.ns4)?e.which:e.keyCode;
        var curKey = String.fromCharCode(evt.which).toLowerCase();
        if (((curKey>='a')&&(curKey<='z'))||((curKey>='0')&&(curKey<='9'))) 
evt.charKey=curKey;
        else evt.charKey=null;
        evt.ctrlKey=(is.ns4)?(e.modifiers & 
Event.CONTROL_MASK):(e.ctrlKey||e.ctrlLeft||e.keyCode==17);
        evt.shiftKey=(is.ns4)?(e.modifiers & 
Event.SHIFT_MASK):(e.shiftKey||e.shiftLeft||e.keyCode==16);
        evt.orig=e;
        realsrc.invokeEvent(evt.type,evt);
        evt.bubbleEvent();
        return evt.browserReturn;
};
DynKeyEvent._e=new DynKeyEvent();
DynDocument.prototype.captureKeyEvents=function() {
        if(is.def&&!is.ie) {
                this.doc.addEventListener("keydown",DynKeyEvent.EventMethod,false)
                this.doc.addEventListener("keyup",DynKeyEvent.EventMethod,false)
                this.doc.addEventListener("keypress",DynKeyEvent.EventMethod,false)
        }
        else {
                if (is.ns4) this.doc.captureEvents(Event.KEYPRESS | Event.KEYDOWN | 
Event.KEYUP);
                
this.doc.onkeypress=this.doc.onkeydown=this.doc.onkeyup=DynKeyEvent.EventMethod
        }
}
DynDocument.prototype.releaseKeyEvents=function() {
        if(is.def&&!is.ie) {
                this.doc.removeEventListener("keydown",DynKeyEvent.EventMethod,false)
                this.doc.removeEventListener("keyup",DynKeyEvent.EventMethod,false)
                this.doc.removeEventListener("keypress",DynKeyEvent.EventMethod,false)
        }
        else {
                if (is.ns4) this.doc.releaseEvents(Event.KEYPRESS | Event.KEYDOWN | 
Event.KEYUP);
                this.doc.onkeypress=this.doc.onkeydown=this.doc.onkeyup=null
        }
}
DynLayer.prototype.captureKeyEvents=function() {
        if(!this.elm) return
        if(is.def&&!is.ie) {
                this.elm.addEventListener("keydown",DynKeyEvent.EventMethod,false)
                this.elm.addEventListener("keyup",DynKeyEvent.EventMethod,false)
                this.elm.addEventListener("keypress",DynKeyEvent.EventMethod,false)
        }
        else {
                if (is.ns4) this.elm.captureEvents(Event.KEYPRESS | Event.KEYDOWN | 
Event.KEYUP);
                
this.elm.onkeypress=this.elm.onkeydown=this.elm.onkeyup=DynKeyEvent.EventMethod
        }
}
DynLayer.prototype.releaseKeyEvents=function() {
        if(!this.elm) return
        if(is.def&&!is.ie) {
                this.elm.removeEventListener("keydown",DynKeyEvent.EventMethod,false)
                this.elm.removeEventListener("keyup",DynKeyEvent.EventMethod,false)
                this.elm.removeEventListener("keypress",DynKeyEvent.EventMethod,false)
        }
        else {
                if (is.ns4) this.elm.releaseEvents(Event.KEYPRESS | Event.KEYDOWN | 
Event.KEYUP);
                this.elm.onkeypress=this.elm.onkeydown=this.elm.onkeyup=null
        }
}

/* Overwrite methods to support key events. */
DynObject.prototype.assignKeyEvents = function() {
        if (this.hasEventListeners) this.captureKeyEvents()
        var l=this.children.length;
        for (var i=0; i<l; i++) this.children[i].assignKeyEvents()
}
DynObject.prototype._OldK_addEventListener = DynObject.prototype.addEventListener
DynObject.prototype.addEventListener = function(l) {
        var r = this._OldK_addEventListener(l)
        if(this.hasEventListeners && this.created) this.captureKeyEvents()
        return r
}
DynObject.prototype._OldK_removeEventListener = DynObject.prototype.removeEventListener
DynObject.prototype.removeEventListener = function(l) {
        var r = this._OldK_removeEventListener(l)
        if(!this.hasEventListeners) this.releaseKeyEvents()
        return r
}
DynObject.prototype._OldK_removeAllEventListeners = 
DynObject.prototype.removeAllEventListeners
DynObject.prototype.removeAllEventListeners = function() {
        var r = this._OldK_removeAllEventListeners()
        this.releaseKeyEvents()
        return r
}
// DynLayer Specific
DynLayer.prototype._OldK_specificCreate = DynLayer.prototype.specificCreate
DynLayer.prototype.specificCreate = function() {
        this._OldK_specificCreate()
        this.assignKeyEvents()
}
// DynDocument specific
DynDocument.prototype._OldK_specificCreate = DynDocument.prototype.specificCreate
DynDocument.prototype.specificCreate = function() {
        this._OldK_specificCreate()
        this.assignKeyEvents()
}

--- NEW FILE ---
// DS: this code needs to be updated

/*

DynObject.prototype.findLayers=function() {
        var divs=[];
        if (is.def&&!is.ie) divs=this.doc.getElementsByTagName("DIV");
        else if (is.ie) divs=this.doc.all.tags("DIV");
        else if (is.ns4) divs=this.doc.layers;
        else return;
        for (var i=0; i<divs.length; i++) {
                if(Methods.isDirectChildOf(divs[i],this.elm)) {
                        var id=is.ns4? divs[i].name : divs[i].id;
                        var dlyr=new DynLayer(id);
                        dlyr.parent=this;
                        dlyr.created=true;
                        dlyr.isChild=true;
                        dlyr.elm=divs[i];
                        if (is.def) {
                                dlyr.css=dlyr.elm.style;
                                dlyr.doc=this.doc
                        }
                        else if (is.ns4) { 
                                dlyr.css=dlyr.elm;
                                dlyr.doc=dlyr.elm.document;
                        }
                        dlyr.frame=this.frame;
                        //Event stuff
                        dlyr.elm.lyrobj=dlyr.doc.lyrobj=dlyr;
                        if(is.ns4) {
                                for (var j in dlyr.doc.images) 
dlyr.doc.images[j].lyrobj=dlyr; 
                                for (j=0;j<dlyr.doc.links.length;j++) 
dlyr.doc.links[j].lyrobj=dlyr;
                        }
                        // DynObject.all[dlyr.id]=dlyr;
                        // JM: Constructors take care of this
                        this.children[this.children.length]=dlyr;
                        dlyr.updateValues();
                        dlyr.findLayers();
                }
        }
};
DynLayer.prototype.updateValues=function() {
        if (is.def) {
                this.x=this.elm.offsetLeft;
                this.y=this.elm.offsetTop;
                this.w=is.ie4? this.css.pixelWidth||this.getContentWidth() : 
this.elm.offsetWidth;
                this.h=is.ie4? this.css.pixelHeight||this.getContentHeight() : 
this.elm.offsetHeight;
                this.bgImage = this.css.backgroundImage;
                this.bgColor = this.css.backgroundColor;
                this.html = this.innerHTML = this.elm.innerHTML;
        }
        else if (is.ns4) {
                this.x=parseInt(this.css.left);
                this.y=parseInt(this.css.top);
                this.w=this.css.clip.width;
                this.h=this.css.clip.height;
                
this.clip=[this.css.clip.top,this.css.clip.right,this.css.clip.bottom,this.css.clip.left];
                
this.bgColor=this.doc.bgColor!="this.doc.bgColor"?this.doc.bgColor:null;
                this.bgImage=this.elm.background.src!=""?this.elm.background.src:null;
                this.html=this.innerHTML = this.elm.innerHTML = "";
        }
        this.z=this.css.zIndex;
        var b=this.css.visibility;
        this.visible=(b=="inherit"||b=="show"||b=="visible"||b=="");
};
Methods.isDirectChildOf = function(l, parent) {
        if(is.def&&!is.ie) {
                for(var p=l.parentNode;p;p=p.parentNode) 
if(p.nodeName.toLowerCase()=='div') return p==parent;
                return !parent.nodeName;
        }
        else if (is.ie) {
                for(var p=l.parentElement;p;p=p.parentElement) 
if(p.tagName.toLowerCase()=='div') return p==parent;
                return !parent.tagName;
        }
        else if(is.ns4) return (l.parentLayer == parent);
};

DynDocument.prototype._OldI_specificCreate = DynDocument.prototype.specificCreate
DynDocument.prototype.specificCreate = function() {
        this._OldI_specificCreate()
        this.findLayers()
}

*/

_______________________________________________
Dynapi-CVS mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dynapi-cvs

Reply via email to