You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2009/03/31 22:27:18 UTC

svn commit: r760589 - in /labs/magma/trunk: foundation-maps/src/main/java/org/apache/magma/maps/ maps-google/src/main/java/org/apache/magma/maps/google/ maps-google/src/main/resources/org/apache/magma/website/googlemaps/ website-beansview/src/main/java...

Author: simoneg
Date: Tue Mar 31 20:27:18 2009
New Revision: 760589

URL: http://svn.apache.org/viewvc?rev=760589&view=rev
Log:
LABS-328 : WCAG/Stanca Act fallback

Modified:
    labs/magma/trunk/foundation-maps/src/main/java/org/apache/magma/maps/GeoCoordinates.java
    labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/MappedSmartListProducer.java
    labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/magmaGoogleMaps.css
    labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/magmaGoogleMaps.js
    labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowList.java

Modified: labs/magma/trunk/foundation-maps/src/main/java/org/apache/magma/maps/GeoCoordinates.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-maps/src/main/java/org/apache/magma/maps/GeoCoordinates.java?rev=760589&r1=760588&r2=760589&view=diff
==============================================================================
--- labs/magma/trunk/foundation-maps/src/main/java/org/apache/magma/maps/GeoCoordinates.java (original)
+++ labs/magma/trunk/foundation-maps/src/main/java/org/apache/magma/maps/GeoCoordinates.java Tue Mar 31 20:27:18 2009
@@ -41,8 +41,15 @@
 		this.longitude = longitude;
 	}
 	
+	public String getFormattedLatitude() {
+		return nf.format(latitude);
+	}
+	public String getFormattedLongitude() {
+		return nf.format(longitude);
+	}
+	
 	public String toString() {
-		return "[" + nf.format(latitude) + ";" + nf.format(longitude) + "]";
+		return "[" + getFormattedLatitude() + ";" + getFormattedLongitude() + "]";
 	}
 	public Accuracy getCoordinatesAccuracy() {
 		return coordinatesAccuracy;

Modified: labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/MappedSmartListProducer.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/MappedSmartListProducer.java?rev=760589&r1=760588&r2=760589&view=diff
==============================================================================
--- labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/MappedSmartListProducer.java (original)
+++ labs/magma/trunk/maps-google/src/main/java/org/apache/magma/maps/google/MappedSmartListProducer.java Tue Mar 31 20:27:18 2009
@@ -3,7 +3,9 @@
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.Writer;
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.List;
 
 import org.apache.magma.basics.LocalizableString;
 import org.apache.magma.beans.MagmaBeanSupport;
@@ -18,9 +20,8 @@
 public class MappedSmartListProducer extends SmartListProducer {
 
 	private String prototype = 
-		"<div style=\"display: none\" class=\"MagmaGoogleMapListContainer\">" +
-		"<div class=\"MagmaGoogleMapListTab\"><ul>" +
-		"</ul></div>" +
+		"<div class=\"MagmaGoogleMapListContainer\">" +
+		"<div class=\"MagmaGoogleMapListTab\"></div>" +
 		"<div class=\"MagmaGoogleMap\"></div>" +
 		"<a class=\"MagmaGoogleMapDetailsLink\">" +
 		new LocalizableString("Details").toString() + 
@@ -30,12 +31,38 @@
 	public <T> MappedSmartListProducer(Class<T> myclass, Collection<? extends T> list) {
 		super(myclass, list);
 	}
+
+	private static String[] markerLetters = null;
+	
+	static {
+		markerLetters = new String[36];
+		for (int i = 0; i < 9; i++) {
+			markerLetters[i] = Integer.toString(i + 1);
+		}
+		for (int i = 0; i < 26; i++) {
+			markerLetters[i + 9] = Character.toString((char)('a' + i));
+		}
+	}
+	
+	private List<String> markers = new ArrayList<String>();
+	
+	protected String addMarker(GeoCoordinates coords) {
+		String markerdef = coords.getFormattedLatitude() + "," + coords.getFormattedLongitude();
+		markerdef += ",red";
+		String markchar = "-";
+		if (markers.size() < markerLetters.length) {
+			markchar = markerLetters[markers.size()];
+			markerdef += markchar; 
+		}
+		markers.add(markerdef);
+		return markchar;
+	}
 	
 	@Override
 	public void head(Head head) {
 		head.addCss("magma:/common/googlemaps/magmaGoogleMaps.css");
 		head.addExternalScript("magma:/common/googlemaps/magmaGoogleMaps.js");
-		head.addExternalScript("http://maps.google.com/maps?file=api&v=2&sensor=false&key=" + Settings.get("google.maps.key"));
+		head.addExternalScript("http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=" + Settings.get("google.maps.key"));
 		head.addDoOnload("mappize");
 		super.head(head);
 	}
@@ -45,13 +72,46 @@
 		stream.write("<div class=\"MagmaGoogleMapsList\">");
 		super.produce(stream);
 		sendPrototype(stream);
+		sendStaticImage(stream);
+		sendCSSDetection(stream);		
 		stream.write("</div>");		
 	}
 	
 	protected void sendPrototype(Writer stream) throws IOException {
 		stream.write(prototype);
 	}
+	protected void sendStaticImage(Writer stream) throws IOException {
+		String img = "<img src=\"http://maps.google.com/staticmap?";
+		img += "sensor=false";
+		img += "&amp;size=512x512";
+		img += "&amp;key=" + Settings.get("google.maps.key");
+		img += "&amp;markers=";
+		for (String marker : this.markers) {
+			img += marker + "|";
+		}
+		img += "\" alt=\"";
+		img += new LocalizableString("Map").toString();
+		img += "\" class=\"";
+		img += "MagmaGoogleMapsStatic";
+		img += "\" />";
+		stream.write(img);		
+	}
+	protected void sendCSSDetection(Writer stream) throws IOException {
+		stream.write("<div class=\"MagmaCssDetect\"></div>");
+	}
 
+	
+	@Override
+	protected void closeHeaderRow(Writer tables) throws IOException {
+		tables.write("<th class=\"MagmaList-HeaderCell MagmaGoogleMapsMarker\">");
+		tables.write(new LocalizableString("Marker").toString());
+		tables.write("</th>");		
+		tables.write("<th class=\"MagmaList-HeaderCell MagmaGoogleMapsDescription\">");
+		tables.write(new LocalizableString("Description").toString());
+		tables.write("</th>");
+		super.closeHeaderRow(tables);
+	}
+	
 	@Override
 	protected void closeRow(Object o, Writer tables) throws IOException {
 		GeoCoordinates coords = null;
@@ -64,13 +124,13 @@
 		if (o instanceof GeoLocated) {
 			coords = ((GeoLocated)o).getCoordinates();
 		}
+		tables.write("<td class=\"MagmaList-Cell MagmaGoogleMapsMarker\">");
 		if (coords != null && coords.getCoordinatesAccuracy() != GeoCoordinates.Accuracy.UNRESOVED) {
-			tables.write("<td class=\"MagmaGoogleMapsCoordsCell\">");
-			tables.write(coords.toString());
-			tables.write("</td>");
+			tables.write(addMarker(coords));
 		}
+		tables.write("</td>");
 		if (o instanceof MagmaBeanSupport) {
-			tables.write("<td class=\"MagmaGoogleMapsDescription\">");
+			tables.write("<td class=\"MagmaList-Cell MagmaGoogleMapsDescription\">");
 			tables.write(((MagmaBeanSupport)o).toUser());
 			tables.write("</td>");
 		}

Modified: labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/magmaGoogleMaps.css
URL: http://svn.apache.org/viewvc/labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/magmaGoogleMaps.css?rev=760589&r1=760588&r2=760589&view=diff
==============================================================================
--- labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/magmaGoogleMaps.css (original)
+++ labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/magmaGoogleMaps.css Tue Mar 31 20:27:18 2009
@@ -46,6 +46,11 @@
 	font-weight: bold;
 }
 
+.MagmaCssDetect {
+	display: block;
+	width: 120px;
+	height: 0px;
+}
 
 
 

Modified: labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/magmaGoogleMaps.js
URL: http://svn.apache.org/viewvc/labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/magmaGoogleMaps.js?rev=760589&r1=760588&r2=760589&view=diff
==============================================================================
--- labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/magmaGoogleMaps.js (original)
+++ labs/magma/trunk/maps-google/src/main/resources/org/apache/magma/website/googlemaps/magmaGoogleMaps.js Tue Mar 31 20:27:18 2009
@@ -1,4 +1,5 @@
 function mappize() {
+	
 	$('div.MagmaGoogleMapsList table.MagmaList').each(function() {
 		goWithMap(this);
 	});
@@ -18,6 +19,12 @@
 }
 
 function goWithMap(mytbl) {
+	var css = $('div.MagmaCssDetect', parent).get(0);
+	if (css.offsetWidth != 120) {
+		return;
+	}
+	
+	
 	var width = mytbl.offsetWidth;
 	var height = (width * 0.50);
 	
@@ -38,6 +45,12 @@
 	var ndiv = $('div.MagmaGoogleMap', container).get(0);
 	ndiv.id = mytbl.id + '-map';
 
+	var stat = $('img.MagmaGoogleMapsStatic', parent).get(0);
+	var statmarkers = stat.src;
+	statmarkers = statmarkers.match(/markers=([^\"\']*)/)[1];
+	statmarkers = statmarkers.split('|');
+	stat.parentNode.removeChild(stat);
+	
 	var a = $('a.MagmaGoogleMapDetailsLink').get(0);
 	a.style.display="none";
 	
@@ -50,6 +63,7 @@
 	
 	var headers = [];
 	var lines = mytbl.getElementsByTagName('tr');
+	var markcount = 0;
 	for (var j = 0; j < lines.length; j++) {
 		var line = lines[j];
 		var data = {text:'', header:''};
@@ -57,11 +71,12 @@
 		if (cells.length > 0) {
 			for (var k = 0; k < cells.length; k++) {
 				var cell = cells[k];
-				if (cell.className == 'MagmaGoogleMapsCoordsCell') {
+				if (cell.className.indexOf('MagmaGoogleMapsMarker') != -1) {
 					var str = cell.childNodes[0].data;
-					str = str.replace(';',',');
-					data.coords = eval(str);
-				} else if (cell.className == 'MagmaGoogleMapsDescription') {
+					if (str && str.length) {
+						data.onmap = true;
+					}
+				} else if (cell.className.indexOf('MagmaGoogleMapsDescription') != -1) {
 					var str = cell.childNodes[0].data;
 					data.header = str;						 	
 				} else {
@@ -70,6 +85,11 @@
 					data.text += '<b>' + headers[k] + '</b> : ' + stripHtml(cell.innerHTML) + '<br/>'; 
 				}
 			}
+			if (data.onmap) {
+				var coordstr = statmarkers[markcount];
+				markcount++;
+				data.coords = coordstr.split(',');
+			}
 			a = a.cloneNode(true);
 			a.style.display="";
 			a.href = data.link;
@@ -107,7 +127,9 @@
 			cells = line.getElementsByTagName('th');
 			for (var k = 0; k < cells.length; k++) {
 				var cell = cells[k];
-				headers[headers.length] = stripHtml(cell.innerHTML);
+				if (cell.className.indexOf('MagmaGoogleMaps') != -1) {
+					headers[headers.length] = stripHtml(cell.innerHTML);
+				}
 			}					
 		}
 	}

Modified: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowList.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowList.java?rev=760589&r1=760588&r2=760589&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowList.java (original)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowList.java Tue Mar 31 20:27:18 2009
@@ -177,9 +177,18 @@
 		tables.write("</tr>");
 	}
 
-	protected void createHeader(Node root, Writer tables) throws IOException {
+	protected void openHeaderRow(Writer tables) throws IOException {
 		tables.write("<thead>");
 		tables.write("<tr>");
+	}
+	protected void closeHeaderRow(Writer tables) throws IOException {
+		tables.write("</tr>");		
+		tables.write("</thead>");
+	}
+	
+	
+	protected void createHeader(Node root, Writer tables) throws IOException {
+		openHeaderRow(tables);
 		List<Node> nodes = root.getUniqueZone().getNodes();
 		for (Node node : nodes) {
 			if (node instanceof FieldNode) {
@@ -187,8 +196,7 @@
 				createFieldNodeHeader(fldn, tables);
 			}
 		}
-		tables.write("</tr>");		
-		tables.write("</thead>");
+		closeHeaderRow(tables);
 	}
 	
 	protected void createFooter(Node root, Writer tables) throws IOException {



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org