From 248d0519b76be5a715cde7b0b4e45312d9d6c66d Mon Sep 17 00:00:00 2001
From: Olivier Maury <Olivier.Maury@inrae.fr>
Date: Tue, 30 Jul 2024 14:33:24 +0200
Subject: [PATCH 1/2] =?UTF-8?q?R=C3=A9-afficher=20le=20panneau=20de=20droi?=
 =?UTF-8?q?te=20au=20clic=20sur=20une=20PRA=20s=C3=A9lectionn=C3=A9e.=20fi?=
 =?UTF-8?q?xes=20#103?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../www/client/event/MapClickEvent.java       | 37 +++++++++++++++++++
 .../www/client/event/MapClickHandler.java     | 13 +++++++
 .../client/presenter/RightPanelPresenter.java | 10 ++++-
 .../agrometinfo/www/client/view/MapView.java  |  3 ++
 4 files changed, 62 insertions(+), 1 deletion(-)
 create mode 100644 www-client/src/main/java/fr/agrometinfo/www/client/event/MapClickEvent.java
 create mode 100644 www-client/src/main/java/fr/agrometinfo/www/client/event/MapClickHandler.java

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 0000000..636c6ca
--- /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 0000000..0437f06
--- /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 587783c..6b98316 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,11 @@ public final class RightPanelPresenter implements FeatureSelectHandler, Presente
         view.show();
     }
 
+    @Override
+    public void onMapClick(final MapClickEvent event) {
+        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 a4d4df1..5c82b53 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;
         }
-- 
GitLab


From 63fd25bfaa469f6c201d6f9811eaf23d791e3710 Mon Sep 17 00:00:00 2001
From: Olivier Maury <Olivier.Maury@inrae.fr>
Date: Tue, 30 Jul 2024 14:34:31 +0200
Subject: [PATCH 2/2] =?UTF-8?q?R=C3=A9-afficher=20le=20panneau=20de=20droi?=
 =?UTF-8?q?te=20au=20clic=20sur=20une=20PRA=20s=C3=A9lectionn=C3=A9e.=20fi?=
 =?UTF-8?q?xes=20#103?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../agrometinfo/www/client/presenter/RightPanelPresenter.java | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

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 6b98316..225431d 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
@@ -166,7 +166,9 @@ public final class RightPanelPresenter implements FeatureSelectHandler, MapClick
 
     @Override
     public void onMapClick(final MapClickEvent event) {
-        view.show();
+        if (!view.isVisible()) {
+            view.show();
+        }
     }
 
     /**
-- 
GitLab