diff --git a/res/stages/data-view-stage.fxml b/res/stages/data-view-stage.fxml
index 315cb877303a7d975b4ac5cf5e19bf23b8e212bf..9f17a8fd5c75ee133bb950bbb475f88f00c6548f 100644
--- a/res/stages/data-view-stage.fxml
+++ b/res/stages/data-view-stage.fxml
@@ -1,30 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
-<?import javafx.geometry.*?>
-<?import javafx.scene.*?>
-<?import javafx.scene.chart.*?>
-<?import javafx.scene.control.*?>
-<?import javafx.scene.image.*?>
-<?import javafx.scene.layout.*?>
-<?import javafx.scene.text.*?>
-<?import javafx.stage.*?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.Scene?>
+<?import javafx.scene.chart.NumberAxis?>
+<?import javafx.scene.chart.ScatterChart?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.ListView?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+<?import javafx.stage.Stage?>
-<Stage fx:id="stage" xmlns="http://javafx.com/javafx/17.0.12" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fr.univlille.sae.classification.controller.DataStageController">
+<Stage fx:id="stage" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fr.univlille.sae.classification.controller.DataStageController">
<scene>
<Scene>
<AnchorPane prefHeight="502.0" prefWidth="999.0">
<children>
- <VBox prefHeight="513.0" prefWidth="999.0">
+ <VBox prefHeight="562.0" prefWidth="999.0">
<children>
<Label alignment="CENTER" prefHeight="52.0" prefWidth="999.0" style="-fx-background-color: #105561;" text="Vue de classification de données" textFill="WHITE">
<font>
<Font name="System Bold" size="20.0" />
</font></Label>
- <HBox prefHeight="463.0" prefWidth="999.0">
+ <HBox prefHeight="511.0" prefWidth="999.0">
<children>
<VBox prefHeight="459.0" prefWidth="762.0">
<children>
- <HBox alignment="TOP_CENTER" prefHeight="462.0" prefWidth="762.0" spacing="5.0">
+ <HBox alignment="TOP_CENTER" prefHeight="462.0" prefWidth="760.0" spacing="5.0">
<children>
<AnchorPane prefHeight="509.0" prefWidth="688.0">
<children>
@@ -60,6 +66,18 @@
</Button>
</children>
</HBox>
+ <VBox prefHeight="65.0" prefWidth="801.0">
+ <children>
+ <HBox fx:id="legend" alignment="CENTER" prefHeight="58.0" prefWidth="762.0" spacing="10.0">
+ <opaqueInsets>
+ <Insets />
+ </opaqueInsets>
+ <padding>
+ <Insets left="2.0" right="2.0" />
+ </padding>
+ </HBox>
+ </children>
+ </VBox>
</children>
</VBox>
<VBox prefHeight="470.0" prefWidth="238.0">
diff --git a/res/stages/main-stage.fxml b/res/stages/main-stage.fxml
index e867ac83924ee95ffef3b2b01e4cf2d69183734f..37ee5a84d7934efedc54509dd693ece00867c3b5 100644
--- a/res/stages/main-stage.fxml
+++ b/res/stages/main-stage.fxml
@@ -1,15 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
-<?import javafx.geometry.*?>
-<?import javafx.scene.*?>
-<?import javafx.scene.chart.*?>
-<?import javafx.scene.control.*?>
-<?import javafx.scene.image.*?>
-<?import javafx.scene.layout.*?>
-<?import javafx.scene.text.*?>
-<?import javafx.stage.*?>
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.Scene?>
+<?import javafx.scene.chart.NumberAxis?>
+<?import javafx.scene.chart.ScatterChart?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.ListView?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
+<?import javafx.stage.Stage?>
-<Stage fx:id="stage" xmlns="http://javafx.com/javafx/17.0.12" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fr.univlille.sae.classification.controller.MainStageController">
+<Stage fx:id="stage" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fr.univlille.sae.classification.controller.MainStageController">
<scene>
<Scene>
<AnchorPane prefHeight="535.0" prefWidth="922.0">
@@ -42,7 +48,14 @@
<Font size="21.0" />
</font>
</Label>
- <VBox layoutY="345.0" prefHeight="78.0" prefWidth="678.0" />
+ <VBox layoutY="345.0" prefHeight="78.0" prefWidth="678.0">
+ <children>
+ <HBox fx:id="legend" alignment="CENTER" prefHeight="100.0" prefWidth="200.0" spacing="10.0">
+ <padding>
+ <Insets left="2.0" right="2.0" />
+ </padding>
+ </HBox>
+ </children></VBox>
</children>
<HBox.margin>
<Insets left="10.0" />
diff --git a/src/main/java/fr/univlille/sae/classification/controller/DataVisualizationController.java b/src/main/java/fr/univlille/sae/classification/controller/DataVisualizationController.java
index 5f5b95e3ce18914d10520e32cc7166bebe345814..b0e8c0630c318b8edd5160cd52e72280cbdd791f 100644
--- a/src/main/java/fr/univlille/sae/classification/controller/DataVisualizationController.java
+++ b/src/main/java/fr/univlille/sae/classification/controller/DataVisualizationController.java
@@ -7,6 +7,7 @@ import javafx.fxml.FXML;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.ScatterChart;
import javafx.scene.control.Label;
+import javafx.scene.layout.HBox;
import javafx.stage.Stage;
public abstract class DataVisualizationController {
@@ -18,6 +19,9 @@ public abstract class DataVisualizationController {
@FXML
Label AxesSelected;
+ @FXML
+ HBox legend;
+
@FXML
ScatterChart scatterChart;
@@ -143,5 +147,12 @@ public abstract class DataVisualizationController {
+ public void loadLegend(HBox hbox) {
+ this.legend.getChildren().clear();
+ this.legend.getChildren().addAll(hbox.getChildren());
+ }
+
+
+
}
diff --git a/src/main/java/fr/univlille/sae/classification/model/LoadableData.java b/src/main/java/fr/univlille/sae/classification/model/LoadableData.java
index 4aa25be2e34b88f7db8b244d80410cc4299d6e3c..e33aa56df15fe6e6a83e71adecae981d5508889c 100644
--- a/src/main/java/fr/univlille/sae/classification/model/LoadableData.java
+++ b/src/main/java/fr/univlille/sae/classification/model/LoadableData.java
@@ -3,6 +3,7 @@ package fr.univlille.sae.classification.model;
import javafx.scene.paint.Color;
import java.util.Map;
+import java.util.HashMap;
import java.util.Set;
/**
@@ -12,6 +13,8 @@ public abstract class LoadableData {
private static Set<String> classificationTypes;
+ private static Map<String, Color> classification = new HashMap<>() ;
+
/**
* Constructeur par défaut.
*/
@@ -32,6 +35,10 @@ public abstract class LoadableData {
return classificationTypes;
}
+ public static Map<String, Color> getClassifications() {
+ return classification;
+ }
+
/**
* Définit les types de classification disponibles.
* @param classificationTypes ensemble de types de classification à définir.
diff --git a/src/main/java/fr/univlille/sae/classification/utils/ViewUtil.java b/src/main/java/fr/univlille/sae/classification/utils/ViewUtil.java
index b01cc53fa32108c26b3aa4b5db9d95d785b5c069..a0e92fd646fa93b58c4df0fe537e13a53da3292b 100644
--- a/src/main/java/fr/univlille/sae/classification/utils/ViewUtil.java
+++ b/src/main/java/fr/univlille/sae/classification/utils/ViewUtil.java
@@ -2,14 +2,23 @@ package fr.univlille.sae.classification.utils;
import fr.univlille.sae.classification.controller.DataStageController;
import fr.univlille.sae.classification.controller.MainStageController;
+import fr.univlille.sae.classification.model.ClassificationModel;
import fr.univlille.sae.classification.model.LoadableData;
+import javafx.scene.chart.ScatterChart;
import javafx.scene.chart.XYChart;
import javafx.scene.control.ContextMenu;
+import javafx.scene.control.Label;
import javafx.scene.control.MenuItem;
+import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
+import javafx.scene.shape.Circle;
+import javafx.scene.shape.Rectangle;
import javafx.scene.shape.Shape;
import javafx.stage.Stage;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* Classe utilitaire pour la gestion des vues.
*/
@@ -23,7 +32,9 @@ public class ViewUtil {
*/
public static Shape getForm(LoadableData dataLoaded, Shape form, Object controller) {
try {
- form.setFill(dataLoaded.getColor());
+ Color color = LoadableData.getClassifications().get(dataLoaded.getClassification());
+
+ form.setFill(color);
form.setOnMouseClicked(e -> {
if (controller instanceof DataStageController) {
@@ -44,4 +55,31 @@ public class ViewUtil {
return form;
}
+
+ public static HBox loadLegend() {
+ //Color
+
+ Map<String, Color> colors = new HashMap<>(Map.copyOf(LoadableData.getClassifications()));
+ Rectangle rectangle = new Rectangle(10, 10);
+ rectangle.setFill(colors.remove("undefined"));
+ Label label = new Label("undefined");
+ HBox hbox = new HBox();
+ HBox tempHBox = new HBox();
+ tempHBox.getChildren().addAll(rectangle, label);
+ hbox.getChildren().add(tempHBox);
+
+
+ for(String s : colors.keySet()) {
+ Circle c = new Circle(5);
+ c.setFill(colors.get(s));
+ label = new Label(s);
+ tempHBox = new HBox();
+ tempHBox.getChildren().addAll(c, label);
+
+ hbox.getChildren().add(tempHBox);
+ }
+
+ return hbox;
+ }
+
}
diff --git a/src/main/java/fr/univlille/sae/classification/view/DataStageView.java b/src/main/java/fr/univlille/sae/classification/view/DataStageView.java
index 81bdb882905ec531ddebe4a87e8f61e1abc0e781..f14feab96b4523782dce473455a8e8182262d75a 100644
--- a/src/main/java/fr/univlille/sae/classification/view/DataStageView.java
+++ b/src/main/java/fr/univlille/sae/classification/view/DataStageView.java
@@ -13,6 +13,7 @@ import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.chart.ScatterChart;
import javafx.scene.chart.XYChart;
+import javafx.scene.layout.HBox;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
@@ -153,6 +154,9 @@ public class DataStageView extends DataVisualizationView implements Observer {
serieList.get(serie).setName(serie);
}
scatterChart.getData().addAll(serieList.values());
+
+ HBox hBox = ViewUtil.loadLegend();
+ controller.loadLegend(hBox);
}
} catch (Exception e) {
System.err.println("Erreur de mise à jour : " + e.getMessage());
@@ -195,6 +199,8 @@ public class DataStageView extends DataVisualizationView implements Observer {
series4.setName("indéfini");
scatterChart.getData().add(series4);
}
+ HBox hBox = ViewUtil.loadLegend();
+ controller.loadLegend(hBox);
} catch (Exception e) {
System.err.println("Erreur de mise à jour : " + e.getMessage());
}
diff --git a/src/main/java/fr/univlille/sae/classification/view/MainStageView.java b/src/main/java/fr/univlille/sae/classification/view/MainStageView.java
index d87d6d9deccfdc8aa22aa0150bee66b6f69d0817..3c9c13400d3273d647386a4ce8aec774fbaa9c48 100644
--- a/src/main/java/fr/univlille/sae/classification/view/MainStageView.java
+++ b/src/main/java/fr/univlille/sae/classification/view/MainStageView.java
@@ -11,6 +11,7 @@ import javafx.scene.Node;
import javafx.scene.chart.ScatterChart;
import javafx.scene.chart.XYChart;
import javafx.scene.control.*;
+import javafx.scene.layout.HBox;
import javafx.scene.shape.*;
import javafx.stage.Stage;
@@ -154,7 +155,13 @@ public class MainStageView extends DataVisualizationView implements Observer {
serieList.get(serie).setName(serie);
}
scatterChart.getData().addAll(serieList.values());
+
+
+ HBox hBox = ViewUtil.loadLegend();
+ controller.loadLegend(hBox);
}
+
+
} catch (Exception e) {
System.err.println("Erreur de mise à jour : " + e.getMessage());
}
@@ -194,6 +201,9 @@ public class MainStageView extends DataVisualizationView implements Observer {
series4.setName("indéfini");
scatterChart.getData().add(series4);
}
+
+
+ controller.loadLegend(ViewUtil.loadLegend());
} catch (Exception e) {
System.err.println("Erreur de mise à jour : " + e.getMessage());
}