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.

115 lines
3.5 KiB

/*
DynAPI Distribution
ButtonImageStyle
The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
Requires: StyleManager, Button
*/
function ButtonImageStyle(){
var style = new Style(); // create basic style object
style.styleName='ImageButtonStyle';
style._coverAnchor ={left:0,right:0,top:0,bottom:0};
style.fontSize=2;
style.imageOvr = null;
style.loadImages = function(){
// load default images
if(!this.imageOff) this.imageOff = Styles.getImage('btn_off.gif',22,22);
if(!this.imageOn) this.imageOn = Styles.getImage('btn_on.gif',22,22);
};
style._events = {
onmouseout:function(e){
var o=e.getSource();
o.invokeEvent('mouseup',null,true);
},
onmouseover:function(e){
var o=e.getSource();
if(o._disabled) return null;
var img=o.getStyleAttribute('imageOvr');
if(!img) return;
if(!dynapi.ua.ie) o.setBgImage(img.src);
else o.lyrImage.setHTML(img.getHTML());
},
onmouseup:function(e,args){
var o=e.getSource();
var bs = (dynapi.ua.ns4)? o._blkBoardElm:o._blkBoardElm.style;
bs.left="0"; bs.top="0";
var img=o.getStyleAttribute('imageOff');
if(!img) return;
if(!dynapi.ua.ie) o.setBgImage(img.src);
else o.lyrImage.setHTML(img.getHTML());
if(!args) o.invokeEvent('buttonclick'); // this gives better clicking resolutions in IE. See "Mouse Click Speed Test" - Trouble Shooting
},
onmousedown:function(e){
var o=e.getSource();
if(o._disabled) return null;
var bs = (dynapi.ua.ns4)? o._blkBoardElm:o._blkBoardElm.style;
if(!bs.position) bs.position = 'absolute';
bs.left="1"; bs.top="1";
var img=o.getStyleAttribute('imageOn');
if(!img) return;
if(!dynapi.ua.ie) o.setBgImage(img.src);
else o.lyrImage.setHTML(img.getHTML());
}
};
style._setImage = function(ximg,state){
if (state=='on') state='imageOn';
else if (state=='ovr') state='imageOvr';
else state='imageOff';
this.setLocalStyleAttribute(state,ximg);
if(!this._isToggled && state=='imageOff') {
if(!dynapi.ua.ie) o.setBgImage(img.src);
else o.lyrImage.setHTML(img.getHTML());
}
};
// initStyle will act as a function of the DynLayer object
style.initStyle = function(){
var style = this.style;
var img=this.getStyleAttribute('imageOff');
this.enableBlackboard();
this.setTextSelectable(false);
this.setCursor('hand');
this.setBgColor(null); // remove bgcolor
this.setImage = style._setImage;
if(!dynapi.ua.ie) this.setBgImage(img.src);
else{
this.addChild(new DynLayer(img.getHTML(),0,0,img.width,img.height),'lyrImage');
this.lyrImage.setZIndex(-1);
}
this.setMinimumSize(img.width,img.height);
this.setMaximumSize(img.width,img.height);
if(dynapi.ua.ns4) {
this.addChild(new DynLayer(),'lyrCover');
this.lyrCover.setAnchor(this.style._coverAnchor);
this.lyrCover.captureMouseEvents();
}
this.addEventListener(style._events);
this.renderStyle();
};
// renderStyle will act as a function of the DynLayer object
style.renderStyle = function(act){
var all =!act;
// caption & resize
if(all||act=='caption'||act=='resize'){
this.setHTML(this._getCapHTML());
}
};
// removeStyle will act as a function of the DynLayer object
style.removeStyle = function(){
if(dynapi.ua.ns4) this.lyrCover.deleteFromParent();
if(!dynapi.ua.ie) this.setBgImage(null);
else this.lyrImage.deleteFromParent();
this.removeEventListener(this.style._events);
};
return style;
};
// Creates the style once it has been loaded
Styles.addStyle('ButtonImage',ButtonImageStyle);