From a8f89ece3c432e5f1bcf511171e62ca61ded5cb3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Dervaux?= <stephane.dervaux@inrae.fr>
Date: Wed, 20 Mar 2024 13:21:26 +0100
Subject: [PATCH] add a fake object of interest for itinerary observation

---
 .../ObservationOverviewController.java        | 71 +++++++++----------
 1 file changed, 33 insertions(+), 38 deletions(-)

diff --git a/src/main/java/fr/inra/po2vocabmanager/view/dataView/ObservationOverviewController.java b/src/main/java/fr/inra/po2vocabmanager/view/dataView/ObservationOverviewController.java
index 0055df95..99565ee9 100644
--- a/src/main/java/fr/inra/po2vocabmanager/view/dataView/ObservationOverviewController.java
+++ b/src/main/java/fr/inra/po2vocabmanager/view/dataView/ObservationOverviewController.java
@@ -131,10 +131,7 @@ public class ObservationOverviewController {
     public void showNodeDetails(DataNode node) {
 
         ToggleGroup groupFOI = new ToggleGroup();
-        groupFOI.selectedToggleProperty().addListener(observable -> {
-            RadioButton r = (RadioButton) groupFOI.getSelectedToggle();
-            file.setFoi(r.getUserData().toString());
-        });
+
 
         file = (ObservationFile) node.getFile();
         file.checkValue();
@@ -148,44 +145,20 @@ public class ObservationOverviewController {
         UITools.simpleBindValue(file.getCScale(), observationScale);
 
 
-
+        listItem = FXCollections.observableArrayList();
         if(file.getStepFile() != null) { // sinon c'est une observation d'itinéraire.
             listObjectObserved.setDisable(false);
             listObjectObserved.setVisible(true);
-            listItem = FXCollections.observableArrayList();
-
-            // il n'est plus possible de selectionné itinéraire
-//            listItem.add(new MutablePair<>("Itinerary", new MutablePair<>("itinerary", new SimpleBooleanProperty(false))));
+            groupFOI.selectedToggleProperty().addListener(observable -> {
+                RadioButton r = (RadioButton) groupFOI.getSelectedToggle();
+                file.setFoi(r.getUserData().toString());
+            });
             listItem.add(new MutablePair<>("Step - " + file.getStepFile().getNameProperty().get(), new MutablePair<>("step", new SimpleBooleanProperty(false))));
 
             for (CompositionFile comp : file.getStepFile().getCompositionFile().keySet()) {
                 String inout = file.getStepFile().getCompositionFile().get(comp) ? "Input" : "Output";
                 listItem.add(new MutablePair<>(inout+" composition - " + comp.getHeaderPart().getCompoType().getValue().get() + " (" + comp.getHeaderPart().getCompositionID() + ")", new MutablePair<>(comp.getFileName(), new SimpleBooleanProperty(false))));
             }
-            listObjectObserved.setCellFactory(mutablePairListView -> {
-                ListCell<MutablePair<String, MutablePair<String, SimpleBooleanProperty>>> cell = new ListCell<MutablePair<String, MutablePair<String, SimpleBooleanProperty>>>() {
-
-                    @Override
-                    public void updateItem(MutablePair<String, MutablePair<String, SimpleBooleanProperty>> stringMutablePairMutablePair, boolean b) {
-                        super.updateItem(stringMutablePairMutablePair, b);
-                        if (stringMutablePairMutablePair != null && !b) {
-                            RadioButton r = new RadioButton(stringMutablePairMutablePair.getLeft());
-                            r.setUserData(stringMutablePairMutablePair.getRight().getLeft());
-                            r.setSelected(stringMutablePairMutablePair.getRight().getRight().get());
-                            r.setToggleGroup(groupFOI);
-                            setGraphic(r);
-                            setText(null);
-                            setStyle(" -fx-text-fill: black;  -fx-opacity: 1;");
-
-                        } else {
-                            setText(null);
-                            setGraphic(null);
-                        }
-                    }
-                };
-                cell.disableProperty().bind(mainApp.getEditProperty().not());
-                return cell;
-            });
 
             listObjectObserved.setItems(listItem);
             bindFoi(file.getCFoi(), listObjectObserved, file.getStepFile());
@@ -197,12 +170,34 @@ public class ObservationOverviewController {
                 });
             }
         } else {
-            listObjectObserved.setDisable(true); // observation d'itinéraire. on désactive les objects observed
-            listObjectObserved.setVisible(false);
+            listObjectObserved.setDisable(false); // observation d'itinéraire. on active les objects observed avec 1 seul et on ne laisse pas le choix.
+            listObjectObserved.setVisible(true);
+            listItem.add(new MutablePair<>("Itinerary " + file.getItineraryFile().getItineraryName(), new MutablePair<>("Itinerary " + file.getItineraryFile().getItineraryName(), new SimpleBooleanProperty(true))));
+            listObjectObserved.setItems(listItem);
         }
-
-
-
+        listObjectObserved.setCellFactory(mutablePairListView -> {
+            ListCell<MutablePair<String, MutablePair<String, SimpleBooleanProperty>>> cell = new ListCell<MutablePair<String, MutablePair<String, SimpleBooleanProperty>>>() {
+                @Override
+                public void updateItem(MutablePair<String, MutablePair<String, SimpleBooleanProperty>> stringMutablePairMutablePair, boolean b) {
+                    super.updateItem(stringMutablePairMutablePair, b);
+                    if (stringMutablePairMutablePair != null && !b) {
+                        RadioButton r = new RadioButton(stringMutablePairMutablePair.getLeft());
+                        r.setUserData(stringMutablePairMutablePair.getRight().getLeft());
+                        r.setSelected(stringMutablePairMutablePair.getRight().getRight().get());
+                        r.setToggleGroup(groupFOI);
+                        setGraphic(r);
+                        setText(null);
+                        setStyle(" -fx-text-fill: black;  -fx-opacity: 1;");
+
+                    } else {
+                        setText(null);
+                        setGraphic(null);
+                    }
+                }
+            };
+            cell.disableProperty().bind(mainApp.getEditProperty().not());
+            return cell;
+        });
 
         Label titlePane = new Label("Observation");
         titlePane.setAlignment(Pos.CENTER_LEFT);
-- 
GitLab