167 lines
4.2 KiB
JavaScript
167 lines
4.2 KiB
JavaScript
//>>built
|
|
define(["dijit","dojo","dojox"],function(_1,_2,_3){
|
|
_2.provide("dojox.drawing.ui.Button");
|
|
_3.drawing.ui.Button=_3.drawing.util.oo.declare(function(_4){
|
|
_4.subShape=true;
|
|
_2.mixin(this,_4);
|
|
this.width=_4.data.width||_4.data.rx*2;
|
|
this.height=_4.data.height||_4.data.ry*2;
|
|
this.y=_4.data.y||_4.data.cy-_4.data.ry;
|
|
this.id=this.id||this.util.uid(this.type);
|
|
this.util.attr(this.container,"id",this.id);
|
|
if(this.callback){
|
|
this.hitched=_2.hitch(this.scope||window,this.callback,this);
|
|
}
|
|
_4.drawingType="ui";
|
|
if(_4.data.width&&_4.data.height){
|
|
this.shape=new _3.drawing.stencil.Rect(_4);
|
|
}else{
|
|
this.shape=new _3.drawing.stencil.Ellipse(_4);
|
|
}
|
|
var _5=function(s,p,v){
|
|
_2.forEach(["norm","over","down","selected"],function(nm){
|
|
s[nm].fill[p]=v;
|
|
});
|
|
};
|
|
_5(this.style.button,"y2",this.height+this.y);
|
|
_5(this.style.button,"y1",this.y);
|
|
if(_4.icon&&!_4.icon.text){
|
|
var _6=this.drawing.getConstructor(_4.icon.type);
|
|
var o=this.makeOptions(_4.icon);
|
|
o.data=_2.mixin(o.data,this.style.button.icon.norm);
|
|
if(o.data&&o.data.borderWidth===0){
|
|
o.data.fill=this.style.button.icon.norm.fill=o.data.color;
|
|
}else{
|
|
if(_4.icon.type=="line"||(_4.icon.type=="path"&&!_4.icon.closePath)){
|
|
this.style.button.icon.selected.color=this.style.button.icon.selected.fill;
|
|
}else{
|
|
}
|
|
}
|
|
this.icon=new _6(o);
|
|
}else{
|
|
if(_4.text||(_4.icon&&_4.icon.text)){
|
|
o=this.makeOptions(_4.text||_4.icon.text);
|
|
o.data.color=this.style.button.icon.norm.color;
|
|
this.style.button.icon.selected.color=this.style.button.icon.selected.fill;
|
|
this.icon=new _3.drawing.stencil.Text(o);
|
|
this.icon.attr({height:this.icon._lineHeight,y:((this.height-this.icon._lineHeight)/2)+this.y});
|
|
}
|
|
}
|
|
var c=this.drawing.getConstructor(this.toolType);
|
|
if(c){
|
|
this.drawing.addUI("tooltip",{data:{text:c.setup.tooltip},button:this});
|
|
}
|
|
this.onOut();
|
|
},{callback:null,scope:null,hitched:null,toolType:"",onClick:function(_7){
|
|
},makeOptions:function(d,s){
|
|
s=s||1;
|
|
d=_2.clone(d);
|
|
var o={util:this.util,mouse:this.mouse,container:this.container,subShape:true};
|
|
if(typeof (d)=="string"){
|
|
o.data={x:this.data.x-5,y:this.data.y+2,width:this.data.width,height:this.data.height,text:d,makeFit:true};
|
|
}else{
|
|
if(d.points){
|
|
_2.forEach(d.points,function(pt){
|
|
pt.x=pt.x*this.data.width*0.01*s+this.data.x;
|
|
pt.y=pt.y*this.data.height*0.01*s+this.data.y;
|
|
},this);
|
|
o.data={};
|
|
for(var n in d){
|
|
if(n!="points"){
|
|
o.data[n]=d[n];
|
|
}
|
|
}
|
|
o.points=d.points;
|
|
}else{
|
|
for(n in d){
|
|
if(/x|width/.test(n)){
|
|
d[n]=d[n]*this.data.width*0.01*s;
|
|
}else{
|
|
if(/y|height/.test(n)){
|
|
d[n]=d[n]*this.data.height*0.01*s;
|
|
}
|
|
}
|
|
if(/x/.test(n)&&!/r/.test(n)){
|
|
d[n]+=this.data.x;
|
|
}else{
|
|
if(/y/.test(n)&&!/r/.test(n)){
|
|
d[n]+=this.data.y;
|
|
}
|
|
}
|
|
}
|
|
delete d.type;
|
|
o.data=d;
|
|
}
|
|
}
|
|
o.drawingType="ui";
|
|
return o;
|
|
if(d.borderWidth!==undefined){
|
|
o.data.borderWidth=d.borderWidth;
|
|
}
|
|
return o;
|
|
},enabled:true,selected:false,type:"drawing.library.UI.Button",select:function(){
|
|
this.selected=true;
|
|
if(this.icon){
|
|
this.icon.attr(this.style.button.icon.selected);
|
|
}
|
|
this._change(this.style.button.selected);
|
|
this.shape.shadow&&this.shape.shadow.hide();
|
|
},deselect:function(){
|
|
this.selected=false;
|
|
if(this.icon){
|
|
this.icon.attr(this.style.button.icon.norm);
|
|
}
|
|
this.shape.shadow&&this.shape.shadow.show();
|
|
this._change(this.style.button.norm);
|
|
},disable:function(){
|
|
if(!this.enabled){
|
|
return;
|
|
}
|
|
this.enabled=false;
|
|
this._change(this.style.button.disabled);
|
|
this.icon.attr({color:this.style.button.norm.color});
|
|
},enable:function(){
|
|
if(this.enabled){
|
|
return;
|
|
}
|
|
this.enabled=true;
|
|
this._change(this.style.button.norm);
|
|
this.icon.attr({color:this.style.button.icon.norm.color});
|
|
},_change:function(_8){
|
|
this.shape.attr(_8);
|
|
this.shape.shadow&&this.shape.shadow.container.moveToBack();
|
|
if(this.icon){
|
|
this.icon.shape.moveToFront();
|
|
}
|
|
},onOver:function(){
|
|
if(this.selected||!this.enabled){
|
|
return;
|
|
}
|
|
this._change(this.style.button.over);
|
|
},onOut:function(){
|
|
if(this.selected){
|
|
return;
|
|
}
|
|
this._change(this.style.button.norm);
|
|
},onDown:function(){
|
|
if(this.selected||!this.enabled){
|
|
return;
|
|
}
|
|
this._change(this.style.button.selected);
|
|
},onUp:function(){
|
|
if(!this.enabled){
|
|
return;
|
|
}
|
|
this._change(this.style.button.over);
|
|
if(this.hitched){
|
|
this.hitched();
|
|
}
|
|
this.onClick(this);
|
|
},attr:function(_9){
|
|
if(this.icon){
|
|
this.icon.attr(_9);
|
|
}
|
|
}});
|
|
_3.drawing.register({name:"dojox.drawing.ui.Button"},"stencil");
|
|
});
|