comparison 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
comparison
equal deleted inserted replaced
5812:c24820c235d9 5813:e0ab5a566688
2 2
3 import com.google.gwt.core.client.GWT; 3 import com.google.gwt.core.client.GWT;
4 4
5 import com.smartgwt.client.widgets.Label; 5 import com.smartgwt.client.widgets.Label;
6 import com.smartgwt.client.widgets.Window; 6 import com.smartgwt.client.widgets.Window;
7 import com.smartgwt.client.widgets.layout.HLayout;
8 import com.smartgwt.client.widgets.layout.VLayout; 7 import com.smartgwt.client.widgets.layout.VLayout;
8 import com.smartgwt.client.widgets.viewer.DetailViewer;
9 import com.smartgwt.client.widgets.viewer.DetailViewerField;
10 import com.smartgwt.client.widgets.viewer.DetailViewerRecord;
9 11
10 import de.intevation.flys.client.client.FLYSConstants; 12 import de.intevation.flys.client.client.FLYSConstants;
11 import de.intevation.flys.client.shared.model.FeatureInfo; 13 import de.intevation.flys.client.shared.model.FeatureInfo;
12 14
15 import java.util.ArrayList;
13 import java.util.List; 16 import java.util.List;
14 import java.util.Map; 17 import java.util.Map;
15 import java.util.Set; 18 import java.util.Set;
19 import java.util.MissingResourceException;
16 20
17 import org.gwtopenmaps.openlayers.client.feature.VectorFeature; 21 import org.gwtopenmaps.openlayers.client.feature.VectorFeature;
18 import org.gwtopenmaps.openlayers.client.util.Attributes; 22 import org.gwtopenmaps.openlayers.client.util.Attributes;
19 import org.gwtopenmaps.openlayers.client.util.JSObject; 23 import org.gwtopenmaps.openlayers.client.util.JSObject;
20 24
23 27
24 protected FLYSConstants MSG = GWT.create(FLYSConstants.class); 28 protected FLYSConstants MSG = GWT.create(FLYSConstants.class);
25 29
26 protected List<FeatureInfo> features; 30 protected List<FeatureInfo> features;
27 31
32 protected String title;
33
28 34
29 public static final int ROW_HEIGHT = 25; 35 public static final int ROW_HEIGHT = 25;
30 36
31 37
32 public GetFeatureInfoWindow(List<FeatureInfo> features) { 38 public GetFeatureInfoWindow(List<FeatureInfo> features, String title) {
33 super(); 39 super();
34 this.features = features; 40 this.features = features;
41 this.title = title;
35 42
36 initLayout(); 43 initLayout();
37 } 44 }
38 45
39 46
40 protected void initLayout() { 47 protected void initLayout() {
41 VLayout root = new VLayout(); 48 VLayout root = new VLayout();
42 49
43 for (FeatureInfo feature: features) { 50 for (FeatureInfo feature: features) {
44 root.addMember(createFeatureRow(feature)); 51 // Currently this should alway be only one
52 root.addMember(createFeatureViewer(feature));
53 setTitle(MSG.getFeatureInfoWindowTitle() + " " + title);
45 } 54 }
46 55
47 addItem(root); 56 addItem(root);
48 57
49 setWidth(500); 58 setWidth(500);
50 setHeight(500); 59 setHeight(300);
51 setTitle(MSG.getFeatureInfoWindowTitle());
52 60
53 setIsModal(true); 61 setIsModal(false);
54 setShowModalMask(true); 62 // setShowModalMask(true);
55 63
56 centerInPage(); 64 centerInPage();
57 } 65 }
58 66
59 67
60 protected HLayout createFeatureRow(FeatureInfo feature) { 68 protected DetailViewer createFeatureViewer(FeatureInfo feature) {
61 HLayout r = new HLayout(); 69 DetailViewer detailViewer = new DetailViewer();
62 r.setHeight(ROW_HEIGHT); 70 detailViewer.setWidth(487);
63 r.setStyleName("featureinfo-row");
64 r.setMembersMargin(5);
65
66 Label l = new Label("Layer: " + feature.getLayername());
67 l.setHeight(ROW_HEIGHT);
68 l.setWrap(false);
69 r.addMember(l);
70 71
71 Map<String, String> attrs = feature.getAttrs(); 72 Map<String, String> attrs = feature.getAttrs();
72 Set<Map.Entry<String, String>> entries = attrs.entrySet(); 73 Set<Map.Entry<String, String>> entries = attrs.entrySet();
74 List <DetailViewerField> fields = new ArrayList<DetailViewerField>();
75 DetailViewerRecord dr = new DetailViewerRecord();
76
77 DetailViewerField path_field = null; // Make sure path is always the last element
73 78
74 for (Map.Entry<String, String> entry: entries) { 79 for (Map.Entry<String, String> entry: entries) {
75 Label attr = new Label(entry.getKey() + ": " + entry.getValue()); 80 String localized;
76 attr.setHeight(ROW_HEIGHT); 81 try {
82 localized = MSG.getString(entry.getKey());
83 } catch (MissingResourceException mre) {
84 localized = entry.getKey();
85 // We filter unwanted information by localization
86 // Uncomment to filter out unlocalized elements
87 // continue;
88 }
89 if (entry.getKey().equals("PATH")) {
90 path_field = new DetailViewerField(entry.getKey(), localized);
91 } else {
92 fields.add(new DetailViewerField(entry.getKey(), localized));
93 }
94 dr.setAttribute(entry.getKey(), entry.getValue());
95 }
96 if (path_field != null)
97 fields.add(path_field);
77 98
78 r.addMember(attr); 99 DetailViewerField[] fieldArray = new DetailViewerField[fields.size()];
79 } 100 detailViewer.setFields(fields.toArray(fieldArray));
101 detailViewer.setData(new DetailViewerRecord[]{dr});
102 detailViewer.setCanSelectText(true);
80 103
81 return r; 104 return detailViewer;
82 } 105 }
83 106
84 107
85 protected String[][] extractProperties(VectorFeature feature) { 108 protected String[][] extractProperties(VectorFeature feature) {
86 Attributes tmp = feature.getAttributes(); 109 Attributes tmp = feature.getAttributes();

http://dive4elements.wald.intevation.org