[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