ingo@1400: package de.intevation.flys.client.client.ui.map; ingo@1400: ingo@1400: import java.util.List; ingo@1400: ingo@1400: import com.google.gwt.core.client.GWT; ingo@1400: import com.google.gwt.user.client.rpc.AsyncCallback; ingo@1400: ingo@1400: import com.smartgwt.client.util.SC; ingo@1400: ingo@1400: import org.gwtopenmaps.openlayers.client.Map; ingo@1400: import org.gwtopenmaps.openlayers.client.LonLat; ingo@1400: import org.gwtopenmaps.openlayers.client.Pixel; ingo@1400: import org.gwtopenmaps.openlayers.client.event.MapClickListener; ingo@1400: ingo@1402: import de.intevation.flys.client.shared.model.FeatureInfo; ingo@1400: ingo@1400: import de.intevation.flys.client.client.FLYSConstants; ingo@1400: import de.intevation.flys.client.client.services.GFIService; ingo@1400: import de.intevation.flys.client.client.services.GFIServiceAsync; ingo@1404: import de.intevation.flys.client.client.ui.ThemePanel; ingo@1400: ingo@1400: ingo@1400: public class GetFeatureInfo implements MapClickListener { ingo@1400: ingo@1400: protected GFIServiceAsync gfiService = GWT.create(GFIService.class); ingo@1400: ingo@1400: protected FLYSConstants MSG = GWT.create(FLYSConstants.class); ingo@1400: ingo@2439: protected GetFeatureInfoWindow gfiWindow; ingo@2439: ingo@1404: protected Map map; ingo@1404: protected ThemePanel themePanel; ingo@1404: protected String infoFormat; ingo@1400: ingo@1400: ingo@1400: /** ingo@1400: * @param map ingo@1400: * @param themes ingo@1400: * @param url ingo@1400: * @param infoFormat ingo@1400: */ ingo@1404: public GetFeatureInfo(Map map, ThemePanel themePanel, String infoFormat) { ingo@1400: this.map = map; ingo@1404: this.themePanel = themePanel; ingo@1400: this.infoFormat = infoFormat; ingo@1400: } ingo@1400: ingo@1400: ingo@1400: public void activate(boolean activate) { ingo@1400: if (activate) { ingo@1400: map.addMapClickListener(this); ingo@1400: } ingo@1400: else { ingo@1400: map.removeListener(this); ingo@1400: } ingo@1400: } ingo@1400: ingo@1400: ingo@2439: protected void newGetFeatureInfoWindow(List features) { ingo@2439: if (gfiWindow != null) { ingo@2439: gfiWindow.destroy(); ingo@2439: } ingo@2439: ingo@2439: gfiWindow = new GetFeatureInfoWindow(features); ingo@2439: gfiWindow.show(); ingo@2439: } ingo@2439: ingo@2439: ingo@1400: @Override ingo@1400: public void onClick(MapClickListener.MapClickEvent e) { ingo@1400: LonLat lonlat = e.getLonLat(); ingo@1400: Pixel pixel = map.getPixelFromLonLat(lonlat); ingo@1400: ingo@1400: gfiService.query( ingo@2438: themePanel.getThemeList().getActiveThemes(), ingo@1400: infoFormat, ingo@1400: map.getExtent().toString(), ingo@1400: map.getProjection(), ingo@1400: (int) map.getSize().getHeight(), ingo@1400: (int) map.getSize().getWidth(), ingo@1400: pixel.x(), pixel.y(), ingo@1402: new AsyncCallback>() { ingo@1400: public void onFailure(Throwable e) { ingo@1400: SC.warn(MSG.getString(e.getMessage())); ingo@1400: } ingo@1400: ingo@1402: public void onSuccess(List features) { ingo@2439: newGetFeatureInfoWindow(features); ingo@1400: } ingo@1400: }); ingo@1400: } ingo@1400: }