diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/event/MapClickEvent.java b/www-client/src/main/java/fr/agrometinfo/www/client/event/MapClickEvent.java new file mode 100644 index 0000000000000000000000000000000000000000..636c6ca6983b5472f1bbd386dc59b534100eb512 --- /dev/null +++ b/www-client/src/main/java/fr/agrometinfo/www/client/event/MapClickEvent.java @@ -0,0 +1,37 @@ +package fr.agrometinfo.www.client.event; + +import org.gwtproject.event.shared.Event; + +/** + * Event for map click. + * + * @author Olivier Maury + */ +public final class MapClickEvent extends Event<MapClickHandler> { + + /** + * Event type. + */ + public static final Type<MapClickHandler> TYPE = new Type<>(); + + /** + * Builder. + * + * @return built event + */ + public static MapClickEvent of() { + return new MapClickEvent(); + } + + @Override + protected void dispatch(final MapClickHandler handler) { + handler.onMapClick(this); + } + + @Override + public Type<MapClickHandler> getAssociatedType() { + return TYPE; + } + +} + diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/event/MapClickHandler.java b/www-client/src/main/java/fr/agrometinfo/www/client/event/MapClickHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..0437f0655adae11687fef81cc374ce02a3cfdae3 --- /dev/null +++ b/www-client/src/main/java/fr/agrometinfo/www/client/event/MapClickHandler.java @@ -0,0 +1,13 @@ +package fr.agrometinfo.www.client.event; + +/** + * Handler for {@link MapClickEvent}. + * + * @author Olivier Maury + */ +public interface MapClickHandler { + /** + * @param event event with type + */ + void onMapClick(MapClickEvent event); +} diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/presenter/RightPanelPresenter.java b/www-client/src/main/java/fr/agrometinfo/www/client/presenter/RightPanelPresenter.java index 587783cfe2796d9ed6ecd466f8bfba612229eb76..225431df116ed4bc77eb38a82712805a6817b1b4 100644 --- a/www-client/src/main/java/fr/agrometinfo/www/client/presenter/RightPanelPresenter.java +++ b/www-client/src/main/java/fr/agrometinfo/www/client/presenter/RightPanelPresenter.java @@ -13,6 +13,8 @@ import fr.agrometinfo.www.client.event.FeatureSelectEvent; import fr.agrometinfo.www.client.event.FeatureSelectHandler; import fr.agrometinfo.www.client.event.LoadingEvent; import fr.agrometinfo.www.client.event.LoadingEvent.LoadingEventType; +import fr.agrometinfo.www.client.event.MapClickEvent; +import fr.agrometinfo.www.client.event.MapClickHandler; import fr.agrometinfo.www.client.view.BaseView; import fr.agrometinfo.www.client.view.LayoutView; import fr.agrometinfo.www.client.view.RightPanelView; @@ -27,7 +29,7 @@ import fr.agrometinfo.www.shared.service.IndicatorServiceFactory; * * @author Olivier Maury */ -public final class RightPanelPresenter implements FeatureSelectHandler, Presenter { +public final class RightPanelPresenter implements FeatureSelectHandler, MapClickHandler, Presenter { /** * Related view interface. */ @@ -134,6 +136,7 @@ public final class RightPanelPresenter implements FeatureSelectHandler, Presente if (DomGlobal.screen.width > LayoutView.MIN_WIDTH_FOR_PANELS && view.isVisible()) { view.show(); } + App.getEventBus().addHandler(MapClickEvent.TYPE, this); GWT.log("RightPanelPresenter.loadValues() done"); } @@ -161,6 +164,13 @@ public final class RightPanelPresenter implements FeatureSelectHandler, Presente view.show(); } + @Override + public void onMapClick(final MapClickEvent event) { + if (!view.isVisible()) { + view.show(); + } + } + /** * @param mapContainer container for the map */ diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/view/MapView.java b/www-client/src/main/java/fr/agrometinfo/www/client/view/MapView.java index a4d4df14d8c881140e861d2f47d8a0ebe9ae3a4b..5c82b53e2eb6cc7f26ff28bbb8d5f58a94fde68c 100644 --- a/www-client/src/main/java/fr/agrometinfo/www/client/view/MapView.java +++ b/www-client/src/main/java/fr/agrometinfo/www/client/view/MapView.java @@ -18,6 +18,7 @@ import elemental2.dom.HTMLElement; import fr.agrometinfo.www.client.App; import fr.agrometinfo.www.client.event.FeatureSelectEvent; import fr.agrometinfo.www.client.event.FeatureSelectHandler; +import fr.agrometinfo.www.client.event.MapClickEvent; import fr.agrometinfo.www.client.i18n.MapConstants; import fr.agrometinfo.www.client.presenter.MapPresenter; import fr.agrometinfo.www.client.ui.map.CanvasAttributions; @@ -274,6 +275,7 @@ public final class MapView extends HtmlContentBuilder<HTMLElement> implements Fe map.addInteraction(selectFeature); selectFeature.on("select", event -> onFeatureClick(selectFeature.getFeatures())); + map.on("singleclick", event -> App.getEventBus().fireEvent(MapClickEvent.of())); } private Feature[] colorizeFeatures(final Feature[] features) { @@ -371,6 +373,7 @@ public final class MapView extends HtmlContentBuilder<HTMLElement> implements Fe } private void onFeatureClick(final Collection<Feature> features) { + GWT.log("MapView.onFeatureClick()"); if (features == null || features.isEmpty()) { return; }