From 66de703e0874f9ed22c20ea98e568d548c5807f5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Dervaux?= <stephane.dervaux@inrae.fr>
Date: Mon, 4 Mar 2024 13:12:48 +0100
Subject: [PATCH 1/2] first version. Blinking step on selection in graph

---
 .../po2vocabmanager/utils/JavaConnector.java  |  8 ++++
 .../view/dataView/DataOverviewController.java | 42 +++++++++++++++++++
 .../po2vocabmanager/graph/graph-creator.js    |  5 +++
 3 files changed, 55 insertions(+)

diff --git a/src/main/java/fr/inra/po2vocabmanager/utils/JavaConnector.java b/src/main/java/fr/inra/po2vocabmanager/utils/JavaConnector.java
index c63350e3..b7072356 100644
--- a/src/main/java/fr/inra/po2vocabmanager/utils/JavaConnector.java
+++ b/src/main/java/fr/inra/po2vocabmanager/utils/JavaConnector.java
@@ -113,4 +113,12 @@ public class JavaConnector {
             MainApp.getDataControler().selectNode(itiFile);
         }
     }
+
+    public void highlightStep(String node) {
+        JSONObject oStep = new JSONObject(node);
+        StepFile s = listStep.get(oStep.getInt("id"));
+        if(s != null) {
+            MainApp.getDataControler().highlightStep(s, itiFile);
+        }
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/fr/inra/po2vocabmanager/view/dataView/DataOverviewController.java b/src/main/java/fr/inra/po2vocabmanager/view/dataView/DataOverviewController.java
index 1b8e4b67..9d9a9869 100644
--- a/src/main/java/fr/inra/po2vocabmanager/view/dataView/DataOverviewController.java
+++ b/src/main/java/fr/inra/po2vocabmanager/view/dataView/DataOverviewController.java
@@ -33,6 +33,8 @@ import fr.inrae.po2engine.model.dataModel.*;
 import fr.inrae.po2engine.utils.DataTools;
 import fr.inrae.po2engine.utils.Report;
 import fr.inrae.po2engine.utils.Tools;
+import javafx.animation.KeyFrame;
+import javafx.animation.Timeline;
 import javafx.application.Platform;
 import javafx.beans.property.BooleanProperty;
 import javafx.beans.property.SimpleBooleanProperty;
@@ -48,6 +50,7 @@ import javafx.scene.image.ImageView;
 import javafx.scene.layout.AnchorPane;
 import javafx.scene.layout.HBox;
 import javafx.stage.Modality;
+import javafx.util.Duration;
 import org.apache.commons.lang3.tuple.MutablePair;
 
 import java.io.IOException;
@@ -780,4 +783,43 @@ public class DataOverviewController {
 //        listDataNode.remove(gf);
     }
 
+    public void highlightStep(StepFile step, ItineraryFile itineraryFile) {
+        DataNode node = getDataNode(step, itineraryFile);
+        if(node != null) {
+           highlightNode(node);
+        }
+    }
+
+    public void highlightNode(DataNode node) {
+        if(node != null) {
+            TreeItem<DataNode> treeItem = searchNode(rootItem, node);
+            if(treeItem != null) {
+                openTreeItem(treeItem);
+                Platform.runLater(() -> {
+                    Timeline timeline = new Timeline(
+                            new KeyFrame(Duration.seconds(0.2), evt -> {
+                                treeItem.getGraphic().getParent().setVisible(false);
+                            }),
+                            new KeyFrame(Duration.seconds( 0.4), evt -> {
+                                treeItem.getGraphic().getParent().setVisible(true);
+                            }));
+                    timeline.setCycleCount(10);
+                    timeline.play();
+//                    Timeline timeline = new Timeline(new KeyFrame(Duration.millis(500), e -> {
+//                        // Inverser la visibilité du nœud
+//                        treeItem.getGraphic().setVisible(!treeItem.getGraphic().isVisible());
+//                    }));
+//                    timeline.play();
+                });
+
+            }
+        }
+    }
+
+    public void openTreeItem(TreeItem item) {
+        if(item != null) {
+            openTreeItem(item.getParent());
+            item.setExpanded(true);
+        }
+    }
 }
diff --git a/src/main/resources/fr/inra/po2vocabmanager/graph/graph-creator.js b/src/main/resources/fr/inra/po2vocabmanager/graph/graph-creator.js
index 345038fe..af469b86 100644
--- a/src/main/resources/fr/inra/po2vocabmanager/graph/graph-creator.js
+++ b/src/main/resources/fr/inra/po2vocabmanager/graph/graph-creator.js
@@ -340,6 +340,7 @@
       thisGraph.removeSelectFromNode();
     }
     thisGraph.state.selectedNode = nodeData;
+    thisGraph.javaFXHighLightNode(nodeData);
   };
 
   GraphCreator.prototype.removeSelectFromNode = function() {
@@ -848,6 +849,10 @@ GraphCreator.prototype.addEdgeNoUpdate = function(nodeSrc, nodeTgt) {
     javaConnector.delNode(JSON.stringify(node));
   }
 
+  GraphCreator.prototype.javaFXHighLightNode = function(node) {
+    javaConnector.highlightStep(JSON.stringify(node));
+  }
+
   /** MAIN SVG **/
   var svg = d3.select("body").append("svg")
     .attr("width", width)
-- 
GitLab


From e035d3c3fdc898f11ebdd2845a7d3576822fc54a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Dervaux?= <stephane.dervaux@inrae.fr>
Date: Mon, 4 Mar 2024 13:40:28 +0100
Subject: [PATCH 2/2] remove comment

---
 .../view/dataView/DataOverviewController.java                | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/src/main/java/fr/inra/po2vocabmanager/view/dataView/DataOverviewController.java b/src/main/java/fr/inra/po2vocabmanager/view/dataView/DataOverviewController.java
index 9d9a9869..bb4aa213 100644
--- a/src/main/java/fr/inra/po2vocabmanager/view/dataView/DataOverviewController.java
+++ b/src/main/java/fr/inra/po2vocabmanager/view/dataView/DataOverviewController.java
@@ -805,11 +805,6 @@ public class DataOverviewController {
                             }));
                     timeline.setCycleCount(10);
                     timeline.play();
-//                    Timeline timeline = new Timeline(new KeyFrame(Duration.millis(500), e -> {
-//                        // Inverser la visibilité du nœud
-//                        treeItem.getGraphic().setVisible(!treeItem.getGraphic().isVisible());
-//                    }));
-//                    timeline.play();
                 });
 
             }
-- 
GitLab