ingo@800: package de.intevation.flys.client.client.ui.map; ingo@800: ingo@800: import com.smartgwt.client.widgets.Canvas; ingo@800: import com.smartgwt.client.widgets.Label; ingo@800: import com.smartgwt.client.widgets.events.MouseMoveEvent; ingo@800: import com.smartgwt.client.widgets.events.MouseMoveHandler; 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; ingo@800: 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; ingo@800: protected Map map; ingo@800: ingo@800: protected Label x; ingo@800: protected Label y; ingo@800: ingo@800: ingo@800: public MapPositionPanel(MapWidget mapWidget, final Canvas c) { 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@800: setWidth(60); ingo@800: setMembersMargin(2); ingo@800: 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: ingo@800: // TODO We should use the MousePosition control provided by ingo@800: // GwtOpenLayers here instead of calculating the mouse pos manually. ingo@800: c.addMouseMoveHandler(new MouseMoveHandler() { ingo@800: public void onMouseMove(MouseMoveEvent e) { ingo@800: int x = e.getX() - c.getPageLeft(); ingo@800: int y = e.getY() - c.getPageTop(); ingo@800: ingo@800: LonLat point = map.getLonLatFromPixel(new Pixel(x, y)); ingo@800: setX(point.lon()); ingo@800: setY(point.lat()); ingo@800: } ingo@800: }); ingo@800: } ingo@800: ingo@800: ingo@800: protected void setX(double x) { ingo@800: this.x.setContents(String.valueOf(x)); ingo@800: } ingo@800: ingo@800: ingo@800: protected void setY(double y) { ingo@800: this.y.setContents(String.valueOf(y)); ingo@800: } ingo@800: } ingo@800: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :