teichmann@5835: package org.dive4elements.river.client.client.ui.map; ingo@800: raimund@2451: import com.google.gwt.i18n.client.NumberFormat; raimund@2451: ingo@1433: import com.smartgwt.client.types.Alignment; ingo@800: import com.smartgwt.client.widgets.Label; ingo@800: import com.smartgwt.client.widgets.layout.HLayout; ingo@800: ingo@800: import org.gwtopenmaps.openlayers.client.LonLat; ingo@800: import org.gwtopenmaps.openlayers.client.Map; ingo@800: import org.gwtopenmaps.openlayers.client.MapWidget; ingo@800: import org.gwtopenmaps.openlayers.client.Pixel; raimund@1386: import org.gwtopenmaps.openlayers.client.event.EventHandler; raimund@1386: import org.gwtopenmaps.openlayers.client.event.EventObject; raimund@1386: import org.gwtopenmaps.openlayers.client.util.JSObject; ingo@800: ingo@800: /** ingo@800: * @author Ingo Weinzierl ingo@800: */ ingo@800: public class MapPositionPanel extends HLayout { ingo@800: ingo@800: protected MapWidget mapWidget; raimund@1386: protected final Map map; ingo@800: ingo@800: protected Label x; ingo@800: protected Label y; ingo@800: ingo@800: raimund@1386: public MapPositionPanel(MapWidget mapWidget) { ingo@800: this.mapWidget = mapWidget; ingo@800: this.map = mapWidget.getMap(); ingo@800: ingo@800: this.x = new Label(); ingo@800: this.y = new Label(); ingo@800: Label d = new Label("|"); ingo@800: ingo@1433: setAlign(Alignment.RIGHT); ingo@800: setMembersMargin(2); ingo@800: ingo@1433: setWidth(150); ingo@800: x.setWidth(25); ingo@800: y.setWidth(25); ingo@800: d.setWidth(5); ingo@800: ingo@800: addMember(x); ingo@800: addMember(d); ingo@800: addMember(y); ingo@800: raimund@1386: // TODO This is not an optimal way to get the mouse position but makes raimund@1386: // the wrapper canvas superfluous. raimund@1386: this.map.getEvents().register("mousemove", map, new EventHandler() { ingo@800: raimund@1386: @Override raimund@1386: public void onHandle(EventObject eventObject) { raimund@1386: JSObject xy = eventObject.getJSObject().getProperty("xy"); raimund@1386: Pixel px = Pixel.narrowToPixel(xy); raimund@1386: LonLat lonlat = map.getLonLatFromPixel(px); raimund@1386: raimund@1386: setX(lonlat.lon()); raimund@1386: setY(lonlat.lat()); ingo@800: } ingo@800: }); ingo@800: } ingo@800: ingo@800: ingo@800: protected void setX(double x) { raimund@2451: NumberFormat f = NumberFormat.getFormat("#0.0000"); raimund@2451: this.x.setContents(f.format(x).toString()); ingo@800: } ingo@800: ingo@800: ingo@800: protected void setY(double y) { raimund@2451: NumberFormat f = NumberFormat.getFormat("#0.0000"); raimund@2451: this.y.setContents(f.format(y).toString()); ingo@800: } ingo@800: } ingo@800: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :