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 f14feab96b4523782dce473455a8e8182262d75a..cad5bfb62df756c2010d6e253751c0672b527853 100644 --- a/src/main/java/fr/univlille/sae/classification/view/DataStageView.java +++ b/src/main/java/fr/univlille/sae/classification/view/DataStageView.java @@ -32,10 +32,10 @@ import java.util.Map; */ public class DataStageView extends DataVisualizationView implements Observer { - private ClassificationModel model; + private DataStageController controller; - private Map<String, ScatterChart.Series<Double, Double>> serieList; + private XYChart.Series series1; private XYChart.Series series2; @@ -49,9 +49,9 @@ public class DataStageView extends DataVisualizationView implements Observer { * @param model le modèle de classification utilisé pour gérer les données. */ public DataStageView(ClassificationModel model) { - super(); - this.serieList = new HashMap<String, ScatterChart.Series<Double, Double>>(); - this.model = model; + super(model); + + this.series1 = new XYChart.Series(); this.series2 = new XYChart.Series(); this.series3 = new XYChart.Series(); @@ -93,118 +93,6 @@ public class DataStageView extends DataVisualizationView implements Observer { } } - /** - * Met à jour l'affichage des données en fonction des changements dans le modèle. - * @param observable modèle observé. - */ - @Override - public void update(Observable observable) { - try { - if (scatterChart == null || !(observable instanceof ClassificationModel)) { - System.err.println("Erreur de mise à jour."); - return; - } - - scatterChart.getData().clear(); - serieList.clear(); - - if (actualX == null && actualY == null) { - controller.setAxesSelected("Aucuns axes sélectionnés"); - } else { - controller.setAxesSelected(""); - controller.setAxesSelectedDisable(); - - List<LoadableData> points = new ArrayList<>(model.getDatas()); - points.addAll(model.getDataToClass().keySet()); - for (LoadableData data : points) { - Object xValue = data.getAttributesNames().get(actualX); - Object yValue = data.getAttributesNames().get(actualY); - - Double x = 0.0; - if (xValue instanceof Integer) { - x = ((Integer) xValue).doubleValue(); - } else if (xValue instanceof Double) { - x = (Double) xValue; - } - - Double y = 0.0; - if (yValue instanceof Integer) { - y = ((Integer) yValue).doubleValue(); - } else if (yValue instanceof Double) { - y = (Double) yValue; - } - - ScatterChart.Data<Double, Double> dataPoint = new ScatterChart.Data<>(x, y); - - Node nodePoint = ViewUtil.getForm(data, new Circle(5), controller); - - ScatterChart.Series<Double, Double> editSerie = serieList.get(data.getClassification()); - if(editSerie == null){ - editSerie = new ScatterChart.Series<Double, Double>(); - } - if(data.getClassification().equals("undefined") || model.getDataToClass().containsKey(data)) { - nodePoint = ViewUtil.getForm(data, new Rectangle(10,10), controller); - } - dataPoint.setNode(nodePoint); - editSerie.getData().add(dataPoint); - serieList.put(data.getClassification(), editSerie); - } - - for(String serie : serieList.keySet()) { - 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()); - } - } - - /** - * Met à jour l'affichage en ajoutant un nouveau point de données. - * @param observable modèle observé. - * @param data point de données à ajouter. - */ - @Override - public void update(Observable observable, Object data) { - try { - if (scatterChart == null || !(observable instanceof ClassificationModel)) { - System.err.println("Erreur de mise à jour."); - return; - } - LoadableData newData = (LoadableData) data; - if (actualX == null || actualY == null) { - controller.setAxesSelected("Aucuns axes sélectionnés"); - return; - } - Object attrX = newData.getAttributesNames().get(actualX); - Object attrY = newData.getAttributesNames().get(actualY); - if (attrX instanceof Integer) { - attrX = ((Integer) attrX).doubleValue(); - } - if (attrY instanceof Integer) { - attrY = ((Integer) attrY).doubleValue(); - } - XYChart.Data<Double, Double> dataPoint = new XYChart.Data<>( - (Double) attrX, - (Double) attrY - ); - - dataPoint.setNode(ViewUtil.getForm(newData, new Rectangle(10, 10), controller)); - if (!scatterChart.getData().isEmpty()) { - series4.getData().add(dataPoint); - 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()); - } - } /** * Renvoie le contrôleur associé à cette vue. diff --git a/src/main/java/fr/univlille/sae/classification/view/DataVisualizationView.java b/src/main/java/fr/univlille/sae/classification/view/DataVisualizationView.java index 3fdc4552777055ad7c7f2eca8076b643e73bccfd..ecb717c5ce239bb41fd051a50f0886795d360b0a 100644 --- a/src/main/java/fr/univlille/sae/classification/view/DataVisualizationView.java +++ b/src/main/java/fr/univlille/sae/classification/view/DataVisualizationView.java @@ -5,10 +5,17 @@ import fr.univlille.sae.classification.model.ClassificationModel; import fr.univlille.sae.classification.model.LoadableData; import fr.univlille.sae.classification.utils.Observable; import fr.univlille.sae.classification.utils.ViewUtil; +import javafx.scene.Node; import javafx.scene.chart.ScatterChart; import javafx.scene.chart.XYChart; +import javafx.scene.layout.HBox; import javafx.scene.shape.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * Classe abstraite représentant une vue de visualisation des données. * Elle gère les axes actuels et le graphique de dispersion. @@ -23,10 +30,16 @@ public abstract class DataVisualizationView { protected String actualY; protected ScatterChart scatterChart; private MainStageController controller; + + private Map<String, ScatterChart.Series<Double, Double>> serieList; + public ClassificationModel model; /** * Constructeur par défaut. */ - protected DataVisualizationView() {} + protected DataVisualizationView(ClassificationModel model) { + this.serieList = new HashMap<String, ScatterChart.Series<Double, Double>>(); + this.model = model; + } /** * Renvoie le nom de l'axe X actuel. @@ -74,17 +87,97 @@ public abstract class DataVisualizationView { public abstract void reload(); - /** - * Met à jour l'affichage en ajoutant un nouveau point de données. - * @param observable modèle observé. - * @param data point de données à ajouter. - */ + + public void update(Observable observable) { + try { + if (scatterChart == null || !(observable instanceof ClassificationModel)) { + System.err.println("Erreur de mise à jour."); + return; + } + + scatterChart.getData().clear(); + serieList.clear(); + + if (actualX == null && actualY == null) { + controller.setAxesSelected("Aucuns axes sélectionnés"); + } else { + controller.setAxesSelected(""); + controller.setAxesSelectedDisable(); + + List<LoadableData> points = new ArrayList<>(model.getDatas()); + points.addAll(model.getDataToClass().keySet()); + for (LoadableData data : points) { + Object xValue = data.getAttributesNames().get(actualX); + Object yValue = data.getAttributesNames().get(actualY); + + + + double x = 0; + if(xValue instanceof Number) { + x = ((Number) xValue).doubleValue(); + } + double y = 0; + if(yValue instanceof Number) { + y = ((Number) yValue).doubleValue(); + } + /** + Double x = 0.0; + if (xValue instanceof Integer) { + x = ((Integer) xValue).doubleValue(); + } else if (xValue instanceof Double) { + x = (Double) xValue; + } + + Double y = 0.0; + if (yValue instanceof Integer) { + y = ((Integer) yValue).doubleValue(); + } else if (yValue instanceof Double) { + y = (Double) yValue; + } + **/ + ScatterChart.Data<Double, Double> dataPoint = new ScatterChart.Data<>(x, y); + + Node nodePoint = ViewUtil.getForm(data, new Circle(5), controller); + + ScatterChart.Series<Double, Double> editSerie = serieList.get(data.getClassification()); + if(editSerie == null){ + editSerie = new ScatterChart.Series<Double, Double>(); + } + if(data.getClassification().equals("undefined") || model.getDataToClass().containsKey(data)) { + nodePoint = ViewUtil.getForm(data, new Rectangle(10,10), controller); + } + + dataPoint.setNode(nodePoint); + editSerie.getData().add(dataPoint); + serieList.put(data.getClassification(), editSerie); + } + + for(String serie : serieList.keySet()) { + 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()); + } + } + + public void update(Observable observable, Object data) { try { if (scatterChart == null || !(observable instanceof ClassificationModel)) { System.err.println("Erreur de mise à jour."); return; } + + + LoadableData newData = (LoadableData) data; if (actualX == null || actualY == null) { controller.setAxesSelected("Aucuns axes sélectionnés"); @@ -104,15 +197,14 @@ public abstract class DataVisualizationView { ); dataPoint.setNode(ViewUtil.getForm(newData, new Rectangle(10, 10), controller)); - if (!scatterChart.getData().isEmpty()) { - if (series4 == null) { - series4 = new ScatterChart.Series<>(); - } series4.getData().add(dataPoint); series4.setName("indéfini"); scatterChart.getData().add(series4); } + + + controller.loadLegend(ViewUtil.loadLegend()); } 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 39d6cb935722bf87d326a8dd611ede4a49267a0e..91ea4470b4a49fa04d9932d13db0ab581c35d3f7 100644 --- a/src/main/java/fr/univlille/sae/classification/view/MainStageView.java +++ b/src/main/java/fr/univlille/sae/classification/view/MainStageView.java @@ -26,12 +26,12 @@ import java.util.*; */ public class MainStageView extends DataVisualizationView implements Observer { - private ClassificationModel model; + private MainStageController controller; private Stage root; - private Map<String, ScatterChart.Series<Double, Double>> serieList; + private ScatterChart.Series series1; private ScatterChart.Series series2; @@ -43,13 +43,13 @@ public class MainStageView extends DataVisualizationView implements Observer { * @param model modèle de classification à utiliser. */ public MainStageView(ClassificationModel model) { - super(); - this.serieList = new HashMap<String, ScatterChart.Series<Double, Double>>(); + super(model); + this.series1 = new ScatterChart.Series(); this.series2 = new ScatterChart.Series(); this.series3 = new ScatterChart.Series(); this.series4 = new ScatterChart.Series(); - this.model = model; + model.attach(this); } @@ -98,128 +98,7 @@ public class MainStageView extends DataVisualizationView implements Observer { } } - @Override - public void update(Observable observable) { - try { - if (scatterChart == null || !(observable instanceof ClassificationModel)) { - System.err.println("Erreur de mise à jour."); - return; - } - - scatterChart.getData().clear(); - serieList.clear(); - - if (actualX == null && actualY == null) { - controller.setAxesSelected("Aucuns axes sélectionnés"); - } else { - controller.setAxesSelected(""); - controller.setAxesSelectedDisable(); - - List<LoadableData> points = new ArrayList<>(model.getDatas()); - points.addAll(model.getDataToClass().keySet()); - for (LoadableData data : points) { - Object xValue = data.getAttributesNames().get(actualX); - Object yValue = data.getAttributesNames().get(actualY); - - - - double x = 0; - if(xValue instanceof Number) { - x = ((Number) xValue).doubleValue(); - } - double y = 0; - if(yValue instanceof Number) { - y = ((Number) yValue).doubleValue(); - } - /** - Double x = 0.0; - if (xValue instanceof Integer) { - x = ((Integer) xValue).doubleValue(); - } else if (xValue instanceof Double) { - x = (Double) xValue; - } - - Double y = 0.0; - if (yValue instanceof Integer) { - y = ((Integer) yValue).doubleValue(); - } else if (yValue instanceof Double) { - y = (Double) yValue; - } - **/ - ScatterChart.Data<Double, Double> dataPoint = new ScatterChart.Data<>(x, y); - - Node nodePoint = ViewUtil.getForm(data, new Circle(5), controller); - - ScatterChart.Series<Double, Double> editSerie = serieList.get(data.getClassification()); - if(editSerie == null){ - editSerie = new ScatterChart.Series<Double, Double>(); - } - if(data.getClassification().equals("undefined") || model.getDataToClass().containsKey(data)) { - nodePoint = ViewUtil.getForm(data, new Rectangle(10,10), controller); - } - - dataPoint.setNode(nodePoint); - editSerie.getData().add(dataPoint); - serieList.put(data.getClassification(), editSerie); - } - - for(String serie : serieList.keySet()) { - 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()); - } - } - - @Override - public void update(Observable observable, Object data) { - try { - if (scatterChart == null || !(observable instanceof ClassificationModel)) { - System.err.println("Erreur de mise à jour."); - return; - } - - - LoadableData newData = (LoadableData) data; - if (actualX == null || actualY == null) { - controller.setAxesSelected("Aucuns axes sélectionnés"); - return; - } - Object attrX = newData.getAttributesNames().get(actualX); - Object attrY = newData.getAttributesNames().get(actualY); - if (attrX instanceof Integer) { - attrX = ((Integer) attrX).doubleValue(); - } - if (attrY instanceof Integer) { - attrY = ((Integer) attrY).doubleValue(); - } - XYChart.Data<Double, Double> dataPoint = new XYChart.Data<>( - (Double) attrX, - (Double) attrY - ); - - dataPoint.setNode(ViewUtil.getForm(newData, new Rectangle(10, 10), controller)); - if (!scatterChart.getData().isEmpty()) { - series4.getData().add(dataPoint); - series4.setName("indéfini"); - scatterChart.getData().add(series4); - } - - - controller.loadLegend(ViewUtil.loadLegend()); - } catch (Exception e) { - System.err.println("Erreur de mise à jour : " + e.getMessage()); - } - } public MainStageController getController() { return controller;