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.
114 lines
3.5 KiB
114 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);
|
|
|