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.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.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 OpenLayers.Popup.Anchored();
    
    popup.padding = 0;
    popup.initialize(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;
  }
  
}
	
Documentation generated by 
JSDoc on Tue Aug 21 08:12:28 2007