TipWidgetOL.js
Summary
No overview generated for 'TipWidgetOL.js'
mapbuilder.loadScript(baseDir+"/widget/TipWidgetBase.js");
mapbuilder.loadScript(baseDir+"/util/openlayers/OpenLayers.js");
function TipWidgetOL(widgetNode, model) {
TipWidgetBase.apply(this, new Array(widgetNode, model));
this.onClick = function(objRef) {
var evt = objRef.model.getParam("olFeatureSelect");
var popup = objRef.createPopup(objRef, evt, false);
evt.feature.layer.mbClickPopup = popup;
}
this.onMouseover = function(objRef) {
var evt = objRef.model.getParam("olFeatureHover");
if (evt.feature && !evt.feature.layer.mbClickPopup || !evt.feature.layer.mbClickPopup.visible()) {
var popup = objRef.createPopup(objRef, evt, true);
evt.feature.layer.mbHoverPopup = popup;
popup.events.register('mouseover', popup, popup.hide);
}
}
this.onMouseout = function(objRef) {
var feature = objRef.model.getParam("olFeatureOut");
if (feature && feature.layer && feature.layer.mbHoverPopup) {
feature.layer.mbHoverPopup.destroy();
feature.layer.mbHoverPopup = null;
}
}
this.createPopup = function(objRef, evt, hover) {
var feature = evt.feature;
var sourceNode = objRef.model.doc.selectSingleNode("//*[@fid='"+feature.fid+"']");
var sourceModel = null;
if (sourceNode) {
sourceModel = sourceNode.getAttribute('sourceModel');
}
var widgetConfig = null;
if (sourceModel && config.objects[sourceModel].config && config.objects[sourceModel].config[objRef.id]) {
widgetConfig = config.objects[sourceModel].config[objRef.id];
} else {
widgetConfig = objRef.config;
}
widgetConfig.stylesheet.setParameter('fid', feature.fid);
var lonlat = feature.layer.map.getLonLatFromPixel(evt.xy);
var popup = new Mapbuilder.Popup(null, lonlat, new OpenLayers.Size(widgetConfig.width, widgetConfig.height),
new XMLSerializer().serializeToString(widgetConfig.stylesheet.transformNodeToObject(widgetConfig.model.doc)).replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&"),
null, hover == false);
popup.setOpacity(widgetConfig.opacity);
popup.setBackgroundColor(widgetConfig.backgroundColor);
popup.setBorder(widgetConfig.border);
var quadrant = feature.layer.map.getExtent().determineQuadrant(lonlat);
var lonOffset = quadrant.charAt(1) == 'r' ? -5 : 5;
var latOffset = quadrant.charAt(0) == 't' ? 5 : -5;
popup.anchor = { size: new OpenLayers.Size(0,0), offset: new OpenLayers.Pixel(lonOffset, latOffset)};
feature.layer.map.addPopup(popup, true);
return popup;
}
}
Mapbuilder.Popup = OpenLayers.Class(OpenLayers.Popup.Anchored, {
initialize: function(id, lonlat, size, contentHTML, anchor, closeBox,
closeBoxCallback) {
OpenLayers.Popup.Anchored.prototype.initialize.apply(this, arguments);
this.contentDiv.style.overflow = "hidden";
},
setSize:function(size) {
if (size != undefined) {
this.size = size;
}
if (this.div != null) {
this.div.style.width = this.size.w + "px";
this.div.style.height = this.size.h + "px";
}
if (this.contentDiv != null){
this.contentDiv.style.width = this.size.w + "px";
this.contentDiv.style.height = this.size.h + "px";
}
if ((this.lonlat) && (this.map)) {
var px = this.map.getLayerPxFromLonLat(this.lonlat);
this.moveTo(px);
}
},
addCloseBox:function(closeBoxCallback) {
var closeSize = new OpenLayers.Size(17,17);
var img = config.skinDir + "/openlayers/img/close.gif";
this.closeDiv = OpenLayers.Util.createAlphaImageDiv(
this.id + "_close", null, closeSize, img
);
this.closeDiv.style.right = this.padding + "px";
this.closeDiv.style.top = this.padding + "px";
this.groupDiv.appendChild(this.closeDiv);
var closePopup = closeBoxCallback || function(e) {
this.hide();
OpenLayers.Event.stop(e);
};
OpenLayers.Event.observe(this.closeDiv, "click",
OpenLayers.Function.bindAsEventListener(closePopup, this));
},
CLASS_NAME: "Mapbuilder.Popup"
});
Documentation generated by
JSDoc on Sun Apr 27 20:30:54 2008