ingo@1400: package de.intevation.flys.client.client.ui.map; ingo@1400: christian@3347: import com.google.gwt.core.client.GWT; christian@4965: christian@3347: import com.smartgwt.client.widgets.Label; christian@3347: import com.smartgwt.client.widgets.Window; christian@3347: import com.smartgwt.client.widgets.layout.HLayout; christian@3347: import com.smartgwt.client.widgets.layout.VLayout; christian@3347: christian@3347: import de.intevation.flys.client.client.FLYSConstants; christian@3347: import de.intevation.flys.client.shared.model.FeatureInfo; christian@3347: ingo@1402: import java.util.List; ingo@1402: import java.util.Map; ingo@1402: import java.util.Set; ingo@1402: ingo@1400: import org.gwtopenmaps.openlayers.client.feature.VectorFeature; ingo@1400: import org.gwtopenmaps.openlayers.client.util.Attributes; ingo@1400: import org.gwtopenmaps.openlayers.client.util.JSObject; ingo@1400: ingo@1400: ingo@1400: public class GetFeatureInfoWindow extends Window { ingo@1400: ingo@1400: protected FLYSConstants MSG = GWT.create(FLYSConstants.class); ingo@1400: ingo@1402: protected List features; ingo@1400: ingo@1400: ingo@1402: public static final int ROW_HEIGHT = 25; ingo@1402: ingo@1402: ingo@1402: public GetFeatureInfoWindow(List features) { ingo@1400: super(); ingo@1402: this.features = features; ingo@1402: ingo@1400: initLayout(); ingo@1400: } ingo@1400: ingo@1400: ingo@1400: protected void initLayout() { ingo@1400: VLayout root = new VLayout(); ingo@1400: ingo@1402: for (FeatureInfo feature: features) { ingo@1400: root.addMember(createFeatureRow(feature)); ingo@1400: } ingo@1400: ingo@1400: addItem(root); ingo@1400: christian@3521: setWidth(500); christian@4965: setHeight(500); ingo@1400: setTitle(MSG.getFeatureInfoWindowTitle()); ingo@1400: ingo@2470: setIsModal(true); ingo@2470: setShowModalMask(true); ingo@2470: ingo@1400: centerInPage(); ingo@1400: } ingo@1400: ingo@1400: ingo@1402: protected HLayout createFeatureRow(FeatureInfo feature) { ingo@1400: HLayout r = new HLayout(); ingo@1402: r.setHeight(ROW_HEIGHT); ingo@1402: r.setStyleName("featureinfo-row"); raimund@2487: r.setMembersMargin(5); ingo@1400: ingo@1402: Label l = new Label("Layer: " + feature.getLayername()); ingo@1402: l.setHeight(ROW_HEIGHT); raimund@2487: l.setWrap(false); ingo@1402: r.addMember(l); ingo@1402: ingo@1402: Map attrs = feature.getAttrs(); ingo@1402: Set> entries = attrs.entrySet(); ingo@1402: christian@3347: for (Map.Entry entry: entries) { ingo@1402: Label attr = new Label(entry.getKey() + ": " + entry.getValue()); ingo@1402: attr.setHeight(ROW_HEIGHT); ingo@1402: ingo@1402: r.addMember(attr); ingo@1400: } ingo@1400: ingo@1400: return r; ingo@1400: } ingo@1400: ingo@1400: ingo@1400: protected String[][] extractProperties(VectorFeature feature) { ingo@1400: Attributes tmp = feature.getAttributes(); ingo@1400: JSObject jsobj = tmp.getJSObject(); ingo@1400: ingo@1400: String tmpNames = jsobj.getPropertyNames(); ingo@1400: String[] allNames = tmpNames.split(","); ingo@1400: ingo@1400: String[][] attr = new String[allNames.length][]; ingo@1400: ingo@1400: for (int i = 0, n = attr.length; i < n; i++) { ingo@1400: attr[i] = new String[] { ingo@1400: allNames[i], ingo@1400: jsobj.getPropertyAsString(allNames[i]) }; ingo@1400: } ingo@1400: ingo@1400: return attr; ingo@1400: } ingo@1400: } ingo@1400: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :