ButtonBase.js
Summary
No overview generated for 'ButtonBase.js'
mapbuilder.loadScript(baseDir+"/util/Util.js");
mapbuilder.loadScript(baseDir+"/widget/WidgetBase.js");
function ButtonBase(widgetNode, model) {
var buttonBarNode = widgetNode.selectSingleNode("mb:buttonBar");
if ( buttonBarNode ) {
this.htmlTagId = buttonBarNode.firstChild.nodeValue;
this.buttonBarGroup = this.htmlTagId;
}
var htmlTagNode = widgetNode.selectSingleNode("mb:htmlTagId");
if (htmlTagNode) {
this.htmlTagId = htmlTagNode.firstChild.nodeValue;
}
if ((!buttonBarNode) && (!htmlTagNode)){
alert(mbGetMessage("buttonBarRequired", widgetNode.nodeName));
}
if (config.widgetText) {
var textNodeXpath = "/mb:WidgetText/mb:widgets/mb:" + widgetNode.nodeName;
var textParams = config.widgetText.selectNodes(textNodeXpath+"/*");
for (var j=0;j<textParams.length;j++) {
this[textParams[j].nodeName]=textParams[j].firstChild.nodeValue;
}
}
this.panelHtmlTagId = this.htmlTagId+'_panel';
if (!document.getElementById(this.panelHtmlTagId)) {
var parentNode = document.getElementById(this.htmlTagId);
var olPanelNode = document.createElement('div');
olPanelNode.setAttribute('id', this.panelHtmlTagId);
olPanelNode.setAttribute('class', 'olControlPanel');
parentNode.appendChild(olPanelNode);
parentNode.innerHTML += ' ';
}
loadCss('controlPanel.css');
WidgetBase.apply(this, new Array(widgetNode, model));
this.buttonType = widgetNode.selectSingleNode("mb:class").firstChild.nodeValue;
if (this.buttonType == "RadioButton") this.enabled = false;
var action = widgetNode.selectSingleNode("mb:action");
if (action) {
this.action = action.firstChild.nodeValue;
}
var tooltip = widgetNode.selectSingleNode("mb:tooltip");
if (tooltip) {
this.tooltip = tooltip.firstChild.nodeValue;
}
var disabledImage = widgetNode.selectSingleNode("mb:disabledSrc");
if (disabledImage) {
this.disabledImage = document.createElement("IMG");
this.disabledImage.src = config.skinDir + disabledImage.firstChild.nodeValue;
}
var enabledImage = widgetNode.selectSingleNode("mb:enabledSrc");
if (enabledImage) {
this.enabledImage = document.createElement("IMG");
this.enabledImage.src = config.skinDir + enabledImage.firstChild.nodeValue;
}
this.cursor = 'default';
var cursorNode = this.widgetNode.selectSingleNode("mb:cursor");
if( cursorNode != null ) {
var cursor = cursorNode.firstChild.nodeValue;
this.cursor = cursor;
}
var selected = widgetNode.selectSingleNode("mb:selected");
if (selected && selected.firstChild.nodeValue) this.selected = true;
this.getButtonClass = function(objRef, state) {
var cssName;
if (objRef.control.displayClass) {
cssName = objRef.control.displayClass;
} else {
cssName = objRef.control.CLASS_NAME;
cssName = cssName.replace(/OpenLayers/, 'ol').replace(/\./g, '');
}
cssName += 'Item';
return '.' + cssName + state;
}
this.control = null;
this.doAction = function() {}
this.select = function() {
if (this.control.type == OpenLayers.Control.TYPE_BUTTON) {
this.control.trigger();
} else {
this.panel.activateControl(this.control);
}
}
this.doSelect = function(objRef, selected) {
}
this.attachToOL = function(objRef,refreshId) {
if (refreshId && (refreshId!=objRef.id)) return;
if (!objRef.createControl) return;
objRef.mapPaneDiv = document.getElementById(objRef.targetContext.map.div.id);
var SubclassControl = objRef.createControl(objRef)
var Control = OpenLayers.Class( SubclassControl, {
superclass: SubclassControl.prototype,
trigger: function() {
if(this.superclass.trigger) {
this.superclass.trigger.call(this);
}
objRef.doSelect(objRef, true);
},
activate: function() {
if (this.superclass.activate.call(this)) {
this.panel_div.style.backgroundImage = "url(\""+objRef.enabledImage.src+"\")";
this.map.div.style.cursor = objRef.cursor;
this.map.mbCursor = objRef.cursor;
objRef.enabled = true;
this.active = true;
objRef.doSelect(objRef, true);
}
},
deactivate: function() {
if (this.superclass.deactivate.call(this)) {
this.panel_div.style.backgroundImage = "url(\""+objRef.disabledImage.src+"\")";
objRef.enabled = false;
this.active = false;
objRef.doSelect(objRef, false)
}
}
});
objRef.control = objRef.instantiateControl ? objRef.instantiateControl(objRef, Control) : new Control();
var map = objRef.targetContext.map;
objRef.panel = objRef.targetContext.buttonBars[objRef.htmlTagId];
if (!objRef.panel || objRef.panel.map == null) {
objRef.panel = new OpenLayers.Control.Panel({div: document.getElementById(objRef.panelHtmlTagId), defaultControl: null});
objRef.targetContext.buttonBars[objRef.htmlTagId] = objRef.panel;
map.addControl(objRef.panel);
}
objRef.panel.addControls(objRef.control);
if (objRef.tooltip) {
objRef.control.panel_div.title=objRef.tooltip;
}
objRef.control.panel_div.style.backgroundImage = "url(\""+objRef.disabledImage.src+"\")";
if(objRef.selected == true) {
objRef.control.activate();
}
}
this.buttonInit = function(objRef) {
var targetContext = objRef.widgetNode.selectSingleNode("mb:targetContext");
if (targetContext) {
objRef.targetContext = window.config.objects[targetContext.firstChild.nodeValue];
if ( !objRef.targetModel ) {
alert(mbGetMessage("noTargetContext", targetContext.firstChild.nodeValue, objRef.id));
}
} else {
objRef.targetContext = objRef.targetModel;
}
if (!objRef.targetContext.buttonBars) {
objRef.targetContext.buttonBars = new Array();
}
objRef.targetContext.addListener("refresh", objRef.attachToOL, objRef);
}
this.model.addListener("init",this.buttonInit,this);
}
Documentation generated by
JSDoc on Tue Aug 21 08:12:28 2007