diff flys-client/src/main/java/de/intevation/flys/client/client/ui/map/GetFeatureInfoWindow.java @ 5813:e0ab5a566688

Rework FeatureInfo Window fopr issue 775 Looks much better now :)
author Andre Heinecke <aheinecke@intevation.de>
date Wed, 24 Apr 2013 14:58:14 +0200
parents 8af500d62098
children a4ff4167be1e
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/map/GetFeatureInfoWindow.java	Wed Apr 24 14:51:55 2013 +0200
+++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/map/GetFeatureInfoWindow.java	Wed Apr 24 14:58:14 2013 +0200
@@ -4,15 +4,19 @@
 
 import com.smartgwt.client.widgets.Label;
 import com.smartgwt.client.widgets.Window;
-import com.smartgwt.client.widgets.layout.HLayout;
 import com.smartgwt.client.widgets.layout.VLayout;
+import com.smartgwt.client.widgets.viewer.DetailViewer;
+import com.smartgwt.client.widgets.viewer.DetailViewerField;
+import com.smartgwt.client.widgets.viewer.DetailViewerRecord;
 
 import de.intevation.flys.client.client.FLYSConstants;
 import de.intevation.flys.client.shared.model.FeatureInfo;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.MissingResourceException;
 
 import org.gwtopenmaps.openlayers.client.feature.VectorFeature;
 import org.gwtopenmaps.openlayers.client.util.Attributes;
@@ -25,13 +29,16 @@
 
     protected List<FeatureInfo> features;
 
+    protected String title;
+
 
     public static final int ROW_HEIGHT = 25;
 
 
-    public GetFeatureInfoWindow(List<FeatureInfo> features) {
+    public GetFeatureInfoWindow(List<FeatureInfo> features, String title) {
         super();
         this.features = features;
+        this.title = title;
 
         initLayout();
     }
@@ -41,44 +48,60 @@
         VLayout root = new VLayout();
 
         for (FeatureInfo feature: features) {
-            root.addMember(createFeatureRow(feature));
+            // Currently this should alway be only one
+            root.addMember(createFeatureViewer(feature));
+            setTitle(MSG.getFeatureInfoWindowTitle() + " " + title);
         }
 
         addItem(root);
 
         setWidth(500);
-        setHeight(500);
-        setTitle(MSG.getFeatureInfoWindowTitle());
+        setHeight(300);
 
-        setIsModal(true);
-        setShowModalMask(true);
+        setIsModal(false);
+//        setShowModalMask(true);
 
         centerInPage();
     }
 
 
-    protected HLayout createFeatureRow(FeatureInfo feature) {
-        HLayout r = new HLayout();
-        r.setHeight(ROW_HEIGHT);
-        r.setStyleName("featureinfo-row");
-        r.setMembersMargin(5);
-
-        Label l = new Label("Layer: " + feature.getLayername());
-        l.setHeight(ROW_HEIGHT);
-        l.setWrap(false);
-        r.addMember(l);
+    protected DetailViewer createFeatureViewer(FeatureInfo feature) {
+        DetailViewer detailViewer = new DetailViewer();
+        detailViewer.setWidth(487);
 
         Map<String, String> attrs = feature.getAttrs();
         Set<Map.Entry<String, String>> entries = attrs.entrySet();
+        List <DetailViewerField> fields = new ArrayList<DetailViewerField>();
+        DetailViewerRecord dr = new DetailViewerRecord();
+
+        DetailViewerField path_field = null; // Make sure path is always the last element
 
         for (Map.Entry<String, String> entry: entries) {
-            Label attr = new Label(entry.getKey() + ": " + entry.getValue());
-            attr.setHeight(ROW_HEIGHT);
+            String localized;
+            try {
+                localized = MSG.getString(entry.getKey());
+            } catch (MissingResourceException mre) {
+                localized = entry.getKey();
+//                We filter unwanted information by localization
+//                Uncomment to filter out unlocalized elements
+//                continue;
+            }
+            if (entry.getKey().equals("PATH")) {
+                path_field = new DetailViewerField(entry.getKey(), localized);
+            } else {
+                fields.add(new DetailViewerField(entry.getKey(), localized));
+            }
+            dr.setAttribute(entry.getKey(), entry.getValue());
+        }
+        if (path_field != null)
+            fields.add(path_field);
 
-            r.addMember(attr);
-        }
+        DetailViewerField[] fieldArray = new DetailViewerField[fields.size()];
+        detailViewer.setFields(fields.toArray(fieldArray));
+        detailViewer.setData(new DetailViewerRecord[]{dr});
+        detailViewer.setCanSelectText(true);
 
-        return r;
+        return detailViewer;
     }
 
 

http://dive4elements.wald.intevation.org