SuperX-Kernmodul
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

77 lines
1.9 KiB

/*
DynAPI Distribution
FocusManager Class
The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
requires: DynLayer
*/
FocusManager={};
// usage: FocusManager.enableFocus('auto',true,'click',lyr1,lyr2,...lyrN);
FocusManager.enableFocus=function(b,bubble,type){
var lyr,arg=arguments;
for (var i=3;i<arg.length;i++){
lyr=arg[i];
if(lyr) lyr.setFocus(b,bubble,type);
}
};
DynLayer.prototype.setFocus = function(b,bubble,type){
var i,topchild;
//var d=this.design;
bubble=(bubble==null)? true:bubble;
if(b!=='auto' && !this.parent) return;
if(b=='auto' && !this._hasFocusEvents) {
if(type!='hover') type='click';
this._focusType=type;
this._focusBubble=bubble;
this._hasFocusEvents=true;
this.addEventListener(DynLayer.FocusEvent);
}
else if (b && !this._focused) {
topchild=this.parent._topMostChild;
//i = this.parent.children.length;
if(topchild && topchild!=this) topchild.setFocus(false,bubble);
if(this._hasTabManager) this.updateTabManager();
this.setZIndex({topmost:true});
this.parent._topMostChild=this;
this._focused=true;
this.invokeEvent('focus');
var o=this.parent;
if(bubble) while (o && o!=dynapi.document) {
o.setFocus(b,bubble);
o=o.parent;
};
}else if(!b && this._focused){
topchild=this.parent._topMostChild;
if (topchild) this.setZIndex({below:topchild});
else this.setZIndex(thiz.z-1);
this._focused=false;
this.invokeEvent('blur');
var o=this.parent;
var ch=this.children;
// blur children with focus
for(var i=0;i<ch.length;i++) if(ch[i]._focused) ch[i].setFocus(false,bubble);
if(o && o!=dynapi.document) o.setFocus(false,bubble);
}
};
//DynLayer.prototype.setTabIndex = function(n){
//};
DynLayer.FocusEvent = {
onclick : function(e){
var o=e.getSource();
if(o._focusType=='click') {
o.setFocus(true,o._focusBubble);
}
},
onmouseover : function(e){
var o=e.getSource();
if(o._focusType=='hover') {
o.setFocus(true,o._focusBubble);
}
}
};