[OpenLayers-Commits] r3138 - in sandbox/ominiverdi/openlayers: lib/OpenLayers/Control theme/default
commits at openlayers.org
commits at openlayers.org
Mon May 7 06:52:10 EDT 2007
Author: ominiverdi
Date: 2007-05-07 06:52:08 -0400 (Mon, 07 May 2007)
New Revision: 3138
Modified:
sandbox/ominiverdi/openlayers/lib/OpenLayers/Control/WMSManager.js
sandbox/ominiverdi/openlayers/theme/default/style.css
Log:
WMSManager (ticket #687):
added multiple layer select and 'add layer' button,
added Internet Explorer support (still some bugs).
safari still not working (select is not clickable)
Modified: sandbox/ominiverdi/openlayers/lib/OpenLayers/Control/WMSManager.js
===================================================================
--- sandbox/ominiverdi/openlayers/lib/OpenLayers/Control/WMSManager.js 2007-05-07 07:00:29 UTC (rev 3137)
+++ sandbox/ominiverdi/openlayers/lib/OpenLayers/Control/WMSManager.js 2007-05-07 10:52:08 UTC (rev 3138)
@@ -84,9 +84,10 @@
/**
* @constructor
*/
- initialize: function(aWMSServer,options) {
+ initialize: function(aWMSServer,targetObj,options) {
OpenLayers.Control.prototype.initialize.apply(this, arguments);
this.aWMSServer= aWMSServer;
+ this.targetObj = targetObj;
},
/**
@@ -107,7 +108,9 @@
*/
draw: function() {
OpenLayers.Control.prototype.draw.apply(this);
-
+
+
+
// create layout divs
this.loadContents();
@@ -273,8 +276,8 @@
var layerDiv = document.createElement("div");
layerDiv.className = 'olLegendLayerDiv';
layerDiv.appendChild(inputElem);
+ layerDiv.appendChild(aDrop);
layerDiv.appendChild(labelSpan);
- layerDiv.appendChild(aDrop);
layerDiv.appendChild(br);
if(!baseLayer){
layerDiv.appendChild(aDown);
@@ -409,10 +412,12 @@
loadContents: function() {
//configure main div
+
this.div.style.position = "absolute";
this.div.style.top = "10px";
this.div.style.right = "0px";
this.div.style.left = "";
+ this.div.style.overflow = "hidden";
this.div.style.fontFamily = "sans-serif";
this.div.style.fontWeight = "bold";
this.div.style.marginTop = "3px";
@@ -654,8 +659,8 @@
parseGetCapabilities: function(ajaxRequest) {
var text = ajaxRequest.responseText;
- var xml = ajaxRequest.responseXML;
-
+ var xml = OpenLayers.parseXMLString(ajaxRequest.responseText);
+
if(xml == null) return alert('incorrect content: check your WMS url');
if(typeof xml=='object'){
@@ -742,30 +747,28 @@
//alert('4');
//get Layers
- var aLayers = xml.getElementsByTagName('Layer');
- /*var myp = getRawObject('wmsLayerP');
- if( myp)myp.parentNode.removeChild(myp);
- var p = document.createElement('p');
- p.innerHTML = 'choose a Process';
- p.id = 'wmsLayerP';
- self.formObj.appendChild(p);*/
+ //var aLayers = xml.getElementsByTagName('Layer');
+ var Capability = xml.getElementsByTagName('Capability')[0];
+ var layerCont = this.findChildByName(Capability,'Layer');
+ var aLayers = this.findChildrenByName(layerCont,'Layer');
var myselect = $('wmsLayerList');
if( myselect)myselect.parentNode.removeChild(myselect);
var select = document.createElement('select');
select.name = 'wmsLayerList';
- select.onchange = this.addWMSLayer;
+ //select.onchange = this.addWMSLayer;
select.id = 'wmsLayerList';
select.WMSManager = this;
select.style.width = "220px";
+ select.multiple = 'true';
+ select.size = 5;
var j = 0;
- var opt = new Option( 'select a Layer', '', true, true );
- select[j++] = opt;
+ //var opt = new Option( 'select a Layer', '', true, true );
+ //select[j++] = opt;
for(i=0;i<aLayers.length;i++){
- var names = aLayers[i].getElementsByTagName('Name');
- var titles = aLayers[i].getElementsByTagName('Title');
- //alert(processes[0].textContent);//nodeValue,localName,tagName,textContent
- var name = names[0].textContent;
- var title = titles[0].textContent;
+ var nameNode = this.findChildByName(aLayers[i],'Name');
+ var titleNode = this.findChildByName(aLayers[i],'Title');
+ var name =(nameNode.textContent)? nameNode.textContent:nameNode.text;
+ var title =(titleNode.textContent)? titleNode.textContent:titleNode.text;
select[j++] = new Option(title,name,false,false);
}
formObj.appendChild(select);
@@ -804,28 +807,85 @@
var cheched = $('wmsLayerButton').checked;
$('wmsLayerButton').checked = ($('wmsLayerButton').checked)?'':'checked';
};
- formObj.appendChild(radioSoverlay);
- formObj.appendChild(radioS);
+ var br = document.createElement('br');
+
+ var button = document.createElement('input');
+ button.onclick = this.addWMSLayer;
+ button.WMSManager = this;
+ button.value = 'add layer';
+ button.type = 'button';
+
+ var wmsLayerBox = $('wmsLayerBox');
+ if( wmsLayerBox)wmsLayerBox.parentNode.removeChild(wmsLayerBox);
+ var layerBox = document.createElement('div');
+ layerBox.id = 'wmsLayerBox';
+
+ layerBox.appendChild(radioSoverlay);
+ layerBox.appendChild(radioS);
+ layerBox.appendChild(br);
+ layerBox.appendChild(button);
+
+ formObj.appendChild(layerBox);
+
$('wmsManagerOutput').innerHTML = '';
},
+
/**
* @private
*
*/
+ findChildByName: function(n,name) {
+ var x = n.firstChild;
+ while (x.nodeName!=1 && x.nodeName!=name)
+ {
+ x=x.nextSibling;
+ }
+ return x;
+ },
+
+ /**
+ * @private
+ *
+ */
+ findChildrenByName: function(n,name) {
+
+ var nodes=n.childNodes;
+ var aNode = [];
+ for (i=0;i<nodes.length;i++) {
+ var x=n.childNodes[i];
+ if(x.nodeName==name) aNode.push(x) ;
+ }
+ return aNode;
+ },
+
+ /**
+ * @private
+ *
+ */
addWMSLayer: function() {
var select1 = $('wmsServerList');
var select2 = $('wmsLayerList');
if(select1) var url = select1[select1.selectedIndex].value;
else url ="";
- if(select2) var layer = select2[select2.selectedIndex].value;
+
+ var layerA = [];
+ var titleA = [];
+ for(i = 0; i < select2.options.length; i++) {
+ if(select2.options[i].selected) {
+ layerA.push(select2.options[i].value);
+ if(select2.options[i].textContent)titleA.push(select2.options[i].textContent);
+ else titleA.push(select2.options[i].text);
+ }
+ }
+ if(layerA.length) var layer = layerA.join(',');
else layer ="";
- if(select2) var title = select2[select2.selectedIndex].textContent;
+ if(titleA.length) var title = titleA.join(', ');
else title = layer;
if(url.length<1) {
@@ -852,9 +912,9 @@
/*
* need to check if PNG is supported by the server
*/
- //var layer = null;
+
//set base or overlay
var overlayButton = $('wmsLayerButton');
Modified: sandbox/ominiverdi/openlayers/theme/default/style.css
===================================================================
--- sandbox/ominiverdi/openlayers/theme/default/style.css 2007-05-07 07:00:29 UTC (rev 3137)
+++ sandbox/ominiverdi/openlayers/theme/default/style.css 2007-05-07 10:52:08 UTC (rev 3138)
@@ -179,6 +179,8 @@
margin-right:6px;
padding:3px;
background-color:rgb(100,100,200);
+ width:100%;
+ height:100%;
}
More information about the Commits
mailing list