diff flys-client/src/main/java/de/intevation/flys/client/client/ui/map/GetFeatureInfoWindow.java @ 1402:15ef3d3081b7

Parse GetFeatureInfo response on our own and display resulting FeatureInfo objects in the GetFeatureInfoWindow. flys-client/trunk@3287 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 18 Nov 2011 11:39:10 +0000
parents 96708d81eaf6
children 656df7c0bdda
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/map/GetFeatureInfoWindow.java	Thu Nov 17 16:24:09 2011 +0000
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/map/GetFeatureInfoWindow.java	Fri Nov 18 11:39:10 2011 +0000
@@ -1,5 +1,9 @@
 package de.intevation.flys.client.client.ui.map;
 
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 import com.google.gwt.core.client.GWT;
 
 import com.smartgwt.client.widgets.Label;
@@ -8,10 +12,11 @@
 import com.smartgwt.client.widgets.layout.VLayout;
 
 import org.gwtopenmaps.openlayers.client.feature.VectorFeature;
-import org.gwtopenmaps.openlayers.client.format.GML;
 import org.gwtopenmaps.openlayers.client.util.Attributes;
 import org.gwtopenmaps.openlayers.client.util.JSObject;
 
+import de.intevation.flys.client.shared.model.FeatureInfo;
+
 import de.intevation.flys.client.client.FLYSConstants;
 
 
@@ -19,12 +24,16 @@
 
     protected FLYSConstants MSG = GWT.create(FLYSConstants.class);
 
-    protected VectorFeature[] features;
+    protected List<FeatureInfo> features;
 
 
-    public GetFeatureInfoWindow(String gml) {
+    public static final int ROW_HEIGHT = 25;
+
+
+    public GetFeatureInfoWindow(List<FeatureInfo> features) {
         super();
-        features = new GML().read(gml);
+        this.features = features;
+
         initLayout();
     }
 
@@ -32,31 +41,41 @@
     protected void initLayout() {
         VLayout root = new VLayout();
 
-        for (VectorFeature feature: features) {
+        int rows = 0;
+
+        for (FeatureInfo feature: features) {
             root.addMember(createFeatureRow(feature));
+            rows++;
         }
 
         addItem(root);
 
         setWidth(400);
-        setHeight(200);
+        setHeight(50 + rows * ROW_HEIGHT);
         setTitle(MSG.getFeatureInfoWindowTitle());
 
         centerInPage();
     }
 
 
-    protected HLayout createFeatureRow(VectorFeature feature) {
+    protected HLayout createFeatureRow(FeatureInfo feature) {
         HLayout r = new HLayout();
-        r.setHeight(25);
+        r.setHeight(ROW_HEIGHT);
+        r.setStyleName("featureinfo-row");
 
-        String[][] attrs = extractProperties(feature);
+        Label l = new Label("Layer: " + feature.getLayername());
+        l.setHeight(ROW_HEIGHT);
 
-        for (String[] attr: attrs) {
-            Label l = new Label(attr[0] + ": " + attr[1]);
-            l.setHeight(25);
-            l.setBorder("1px solid black");
-            r.addMember(l);
+        r.addMember(l);
+
+        Map<String, String> attrs = feature.getAttrs();
+        Set<Map.Entry<String, String>> entries = attrs.entrySet();
+
+        for (Map.Entry entry: entries) {
+            Label attr = new Label(entry.getKey() + ": " + entry.getValue());
+            attr.setHeight(ROW_HEIGHT);
+
+            r.addMember(attr);
         }
 
         return r;

http://dive4elements.wald.intevation.org