diff --git a/Boutique/ressources/fxml/MainWindow.fxml b/Boutique/ressources/fxml/MainWindow.fxml
index c49193b..639c592 100644
--- a/Boutique/ressources/fxml/MainWindow.fxml
+++ b/Boutique/ressources/fxml/MainWindow.fxml
@@ -14,10 +14,10 @@
-
+
-
-
+
+
diff --git a/Boutique/src/Modele/metier/Boutique.java b/Boutique/src/Modele/metier/Boutique.java
index c683989..3d40f9f 100644
--- a/Boutique/src/Modele/metier/Boutique.java
+++ b/Boutique/src/Modele/metier/Boutique.java
@@ -39,8 +39,8 @@ public class Boutique implements Serializable {
getSupport().fireIndexedPropertyChange(PROP_AJOUT, index, null, produit);
}
- public void ajouterParfum(String nom, int prix, List fragrances){
- Produit produit = new Parfum(nom, prix, fragrances);
+ public void ajouterParfum(String nom, int prix){
+ Produit produit = new Parfum(nom, prix);
produits.add(produit);
int index = produits.size() - 1;
getSupport().fireIndexedPropertyChange(PROP_AJOUT, index, null, produit);
diff --git a/Boutique/src/view/MainWindow.java b/Boutique/src/view/MainWindow.java
index 55a00ba..daf7bda 100644
--- a/Boutique/src/view/MainWindow.java
+++ b/Boutique/src/view/MainWindow.java
@@ -17,17 +17,18 @@ import launch.Launcher;
import view.cellules.CelluleProduit;
import view.uc.UCDetailHabit;
import view.uc.UCDetailParfum;
-import view_modele.BoutiqueVM;
-import view_modele.HabitVM;
-import view_modele.ParfumVM;
-import view_modele.ProduitVM;
+import view_modele.*;
import java.io.IOException;
+import java.util.Arrays;
public class MainWindow {
@FXML
- public VBox layoutDetail;
+ private VBox layoutDetail;
+
+ @FXML
+ private ComboBox listeFiltrage;
@FXML
private ListView listeProduit;
@@ -50,7 +51,9 @@ public class MainWindow {
new Alert(Alert.AlertType.ERROR, "Erreur", ButtonType.OK).show();
}
- listeProduit.setItems(boutiqueVM.getListeProduits());
+ listeFiltrage.setItems(Filtre.getFiltres());
+ listeFiltrage.getSelectionModel().selectedItemProperty().addListener(__ -> setFiltre());
+ listeProduit.setItems(boutiqueVM.getListeFiltre());
listeProduit.setCellFactory((__) -> new CelluleProduit());
listeProduit.getSelectionModel().selectedItemProperty().addListener((__, oldV, newV) -> {
if(oldV != null){
@@ -74,7 +77,21 @@ public class MainWindow {
});
}
+ private void setFiltre() {
+ boutiqueVM.filtrer((Filtre)listeFiltrage.getSelectionModel().getSelectedItem());
+ }
+
+ @FXML
+ private void ajouterHabit(){
+ boutiqueVM.ajouterHabit("Nouvel habit", 0);
+ }
+
@FXML
+ private void ajouterParfum(){
+ boutiqueVM.ajouterParfum("Nouvel parfum", 0);
+ }
+
+ /* @FXML
private void lancerFenetreAjoutParfum(){
Stage secondStage = new Stage();
secondStage.initOwner(listeProduit.getScene().getWindow());
@@ -124,7 +141,7 @@ public class MainWindow {
}
return controlleur;
- }
+ }*/
@FXML
private void supprimerSelectionne(){
diff --git a/Boutique/src/view/cellules/CelluleProduit.java b/Boutique/src/view/cellules/CelluleProduit.java
index fa3eadb..c7b8f95 100644
--- a/Boutique/src/view/cellules/CelluleProduit.java
+++ b/Boutique/src/view/cellules/CelluleProduit.java
@@ -13,6 +13,7 @@ public class CelluleProduit extends ListCell {
}
else{
textProperty().unbind();
+ setText("");
}
}
}
diff --git a/Boutique/src/view_modele/BoutiqueVM.java b/Boutique/src/view_modele/BoutiqueVM.java
index 6c32da3..5c4482e 100644
--- a/Boutique/src/view_modele/BoutiqueVM.java
+++ b/Boutique/src/view_modele/BoutiqueVM.java
@@ -10,6 +10,7 @@ import javafx.beans.property.ReadOnlyListProperty;
import javafx.beans.property.SimpleListProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
+import javafx.collections.transformation.FilteredList;
import java.beans.IndexedPropertyChangeEvent;
import java.beans.PropertyChangeEvent;
@@ -33,6 +34,12 @@ public class BoutiqueVM implements PropertyChangeListener {
public ReadOnlyListProperty listeProduitsProperty() { return listeProduits; }
public void setListeProduits(ObservableList listeProduits) { this.listeProduits.set(listeProduits); }
+ private FilteredList listeFiltre = new FilteredList<>(produitsObs, p -> true);
+
+ public FilteredList getListeFiltre() {
+ return listeFiltre;
+ }
+
public BoutiqueVM(){
chargeur = new SimpleChargeur();
sauveur = new SimpleSauveur();
@@ -65,8 +72,8 @@ public class BoutiqueVM implements PropertyChangeListener {
return produit;
}
- public void ajouterParfum(String nom, int prix, List fragrances){
- modele.ajouterParfum(nom, prix, fragrances);
+ public void ajouterParfum(String nom, int prix){
+ modele.ajouterParfum(nom, prix);
}
public void ajouterHabit(String nom, int prix){
@@ -84,7 +91,7 @@ public class BoutiqueVM implements PropertyChangeListener {
produitsObs.add(((IndexedPropertyChangeEvent)evt).getIndex(), creerProduitVM((Produit)evt.getNewValue()));
break;
case Boutique.PROP_SUPPRESSION:
- produitsObs.remove(creerProduitVM((Produit)evt.getNewValue()));
+ produitsObs.remove(creerProduitVM((Produit)evt.getOldValue()));
break;
}
}
@@ -92,4 +99,12 @@ public class BoutiqueVM implements PropertyChangeListener {
public void sauver() throws IOException {
sauveur.sauver(modele, NOMFICHIER);
}
+
+ public void filtrer(Filtre filtre){
+ switch (filtre){
+ case TOUS -> listeFiltre.setPredicate(p -> true);
+ case HABIT -> listeFiltre.setPredicate(p -> p instanceof HabitVM);
+ case PARFUM -> listeFiltre.setPredicate(p -> p instanceof ParfumVM);
+ }
+ }
}
diff --git a/Boutique/src/view_modele/Filtre.java b/Boutique/src/view_modele/Filtre.java
new file mode 100644
index 0000000..0865aab
--- /dev/null
+++ b/Boutique/src/view_modele/Filtre.java
@@ -0,0 +1,21 @@
+package view_modele;
+
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+
+public enum Filtre {
+
+ TOUS,
+ HABIT,
+ PARFUM;
+
+ public static ObservableList getFiltres(){
+ ObservableList ans = FXCollections.observableArrayList();
+ for(var filtre : Filtre.values()){
+ ans.add(filtre);
+ }
+
+ return ans;
+ }
+
+}
diff --git a/Boutique/src/view_modele/HabitVM.java b/Boutique/src/view_modele/HabitVM.java
index eb504f5..d3fb812 100644
--- a/Boutique/src/view_modele/HabitVM.java
+++ b/Boutique/src/view_modele/HabitVM.java
@@ -83,5 +83,9 @@ public class HabitVM extends ProduitVM {
return ans;
}
+ @Override
+ public boolean equals(Object obj){
+ return super.equals(obj);
+ }
}
diff --git a/Boutique/src/view_modele/ParfumVM.java b/Boutique/src/view_modele/ParfumVM.java
index 76b1f2f..e6382bd 100644
--- a/Boutique/src/view_modele/ParfumVM.java
+++ b/Boutique/src/view_modele/ParfumVM.java
@@ -44,4 +44,9 @@ public class ParfumVM extends ProduitVM {
case Parfum.PROP_SUPPRESSION_FRAGRANCE -> fragrancesObs.remove((String)evt.getOldValue());
}
}
+
+ @Override
+ public boolean equals(Object obj){
+ return super.equals(obj);
+ }
}