webui-aria2/js/libs/dojox/geo/openlayers/WidgetFeature.js
2012-05-01 19:52:07 +08:00

110 lines
2.3 KiB
JavaScript

//>>built
define("dojox/geo/openlayers/WidgetFeature",["dojo/_base/kernel","dojo/_base/declare","dojo/_base/html","dojo/_base/lang","dojox/geo/openlayers/Feature"],function(_1,_2,_3,_4,_5){
return _2("dojox.geo.openlayers.WidgetFeature",_5,{_widget:null,_bbox:null,constructor:function(_6){
this._params=_6;
},setParameters:function(_7){
this._params=_7;
},getParameters:function(){
return this._params;
},_getWidget:function(){
var _8=this._params;
if((this._widget==null)&&(_8!=null)){
var w=null;
if(typeof (_8.createWidget)=="function"){
w=_8.createWidget.call(this);
}else{
if(_8.dojoType){
_1["require"](_8.dojoType);
var c=_4.getObject(_8.dojoType);
w=new c(_8);
}else{
if(_8.dijitId){
w=dijit.byId(_8.dijitId);
}else{
if(_8.widget){
w=_8.widget;
}
}
}
}
if(w!=null){
this._widget=w;
if(typeof (w.startup)=="function"){
w.startup();
}
var n=w.domNode;
if(n!=null){
_3.style(n,{position:"absolute"});
}
}
this._widget=w;
}
return this._widget;
},_getWidgetWidth:function(){
var p=this._params;
if(p.width){
return p.width;
}
var w=this._getWidget();
if(w){
return _3.style(w.domNode,"width");
}
return 10;
},_getWidgetHeight:function(){
var p=this._params;
if(p.height){
return p.height;
}
var w=this._getWidget();
if(w){
return _3.style(w.domNode,"height");
}
return 10;
},render:function(){
var _9=this.getLayer();
var _a=this._getWidget();
if(_a==null){
return;
}
var _b=this._params;
var _c=_b.longitude;
var _d=_b.latitude;
var _e=this.getCoordinateSystem();
var _f=_9.getDojoMap();
var p=_f.transformXY(_c,_d,_e);
var a=this._getLocalXY(p);
var _10=this._getWidgetWidth();
var _11=this._getWidgetHeight();
var x=a[0]-_10/2;
var y=a[1]-_11/2;
var dom=_a.domNode;
var pa=_9.olLayer.div;
if(dom.parentNode!=pa){
if(dom.parentNode){
dom.parentNode.removeChild(dom);
}
pa.appendChild(dom);
}
this._updateWidgetPosition({x:x,y:y,width:_10,height:_11});
},_updateWidgetPosition:function(box){
var w=this._widget;
var dom=w.domNode;
_3.style(dom,{position:"absolute",left:box.x+"px",top:box.y+"px",width:box.width+"px",height:box.height+"px"});
if(w.srcNodeRef){
_3.style(w.srcNodeRef,{position:"absolute",left:box.x+"px",top:box.y+"px",width:box.width+"px",height:box.height+"px"});
}
if(_4.isFunction(w.resize)){
w.resize({w:box.width,h:box.height});
}
},remove:function(){
var w=this.getWidget();
if(!w){
return;
}
var dom=w.domNode;
if(dom.parentNode){
dom.parentNode.removeChild(dom);
}
}});
});