ingo@1400: package de.intevation.flys.client.client.ui.map; ingo@1400: ingo@1400: import com.google.gwt.core.client.GWT; ingo@1400: ingo@1400: import com.smartgwt.client.widgets.Label; ingo@1400: import com.smartgwt.client.widgets.Window; ingo@1400: import com.smartgwt.client.widgets.layout.HLayout; ingo@1400: import com.smartgwt.client.widgets.layout.VLayout; ingo@1400: ingo@1400: import org.gwtopenmaps.openlayers.client.feature.VectorFeature; ingo@1400: import org.gwtopenmaps.openlayers.client.format.GML; ingo@1400: import org.gwtopenmaps.openlayers.client.util.Attributes; ingo@1400: import org.gwtopenmaps.openlayers.client.util.JSObject; ingo@1400: ingo@1400: import de.intevation.flys.client.client.FLYSConstants; 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@1400: protected VectorFeature[] features; ingo@1400: ingo@1400: ingo@1400: public GetFeatureInfoWindow(String gml) { ingo@1400: super(); ingo@1400: features = new GML().read(gml); ingo@1400: initLayout(); ingo@1400: } ingo@1400: ingo@1400: ingo@1400: protected void initLayout() { ingo@1400: VLayout root = new VLayout(); ingo@1400: ingo@1400: for (VectorFeature feature: features) { ingo@1400: root.addMember(createFeatureRow(feature)); ingo@1400: } ingo@1400: ingo@1400: addItem(root); ingo@1400: ingo@1400: setWidth(400); ingo@1400: setHeight(200); ingo@1400: setTitle(MSG.getFeatureInfoWindowTitle()); ingo@1400: ingo@1400: centerInPage(); ingo@1400: } ingo@1400: ingo@1400: ingo@1400: protected HLayout createFeatureRow(VectorFeature feature) { ingo@1400: HLayout r = new HLayout(); ingo@1400: r.setHeight(25); ingo@1400: ingo@1400: String[][] attrs = extractProperties(feature); ingo@1400: ingo@1400: for (String[] attr: attrs) { ingo@1400: Label l = new Label(attr[0] + ": " + attr[1]); ingo@1400: l.setHeight(25); ingo@1400: l.setBorder("1px solid black"); ingo@1400: r.addMember(l); 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 :