Système de filtrage + modification du système d'ajout

master
Louis PERRET 3 years ago
parent 52c993278b
commit 0d737334c6

@ -14,10 +14,10 @@
<left>
<VBox alignment="CENTER">
<ComboBox/>
<ComboBox fx:id="listeFiltrage"/>
<ListView fx:id="listeProduit"/>
<Button text="Ajouter habit" onAction="#lancerFenetreAjoutHabit"/>
<Button text="Ajouter parfum" onAction="#lancerFenetreAjoutParfum"/>
<Button text="Ajouter habit" onAction="#ajouterHabit"/>
<Button text="Ajouter parfum" onAction="#ajouterParfum"/>
<Button text="Supprimer l'objet sélectionné" onAction="#supprimerSelectionne"/>
</VBox>
</left>

@ -39,8 +39,8 @@ public class Boutique implements Serializable {
getSupport().fireIndexedPropertyChange(PROP_AJOUT, index, null, produit);
}
public void ajouterParfum(String nom, int prix, List<String> 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);

@ -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<ProduitVM> 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(){

@ -13,6 +13,7 @@ public class CelluleProduit extends ListCell<ProduitVM> {
}
else{
textProperty().unbind();
setText("");
}
}
}

@ -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<ProduitVM> listeProduitsProperty() { return listeProduits; }
public void setListeProduits(ObservableList<ProduitVM> listeProduits) { this.listeProduits.set(listeProduits); }
private FilteredList<ProduitVM> listeFiltre = new FilteredList<>(produitsObs, p -> true);
public FilteredList<ProduitVM> 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<String> 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);
}
}
}

@ -0,0 +1,21 @@
package view_modele;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
public enum Filtre {
TOUS,
HABIT,
PARFUM;
public static ObservableList<Filtre> getFiltres(){
ObservableList<Filtre> ans = FXCollections.observableArrayList();
for(var filtre : Filtre.values()){
ans.add(filtre);
}
return ans;
}
}

@ -83,5 +83,9 @@ public class HabitVM extends ProduitVM {
return ans;
}
@Override
public boolean equals(Object obj){
return super.equals(obj);
}
}

@ -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);
}
}

Loading…
Cancel
Save