Skip to content
Snippets Groups Projects
Commit 3bc277f6 authored by Emmanuel Bruno's avatar Emmanuel Bruno
Browse files

moves to observersable complete model but stills has missing features (remove).

parent 4d141a06
Branches
No related tags found
No related merge requests found
Showing
with 446 additions and 487 deletions
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<github.account>emmanuelbruno</github.account> <github.account>emmanuelbruno</github.account>
<!-- utln login for nexus (maven and docker ) repository on lsis --> <!-- utln login for nexus (maven and docker ) repository on lsis -->
<lsisnexus.login>emmanuel.bruno@univ-tln.fr</lsisnexus.login> <lsisnexus.login>emmanuel.bruno@univ-tln.fr</lsisnexus.login>
<app.main.class>fr.univtln.bruno.d14.simpleihm.App</app.main.class> <app.main.class>fr.univtln.bruno.coursjava.librarymanager.simplegui.App</app.main.class>
</properties> </properties>
<repositories> <repositories>
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
<dependency> <dependency>
<groupId>fr.univtln.bruno.coursjava.librarymanager</groupId> <groupId>fr.univtln.bruno.coursjava.librarymanager</groupId>
<artifactId>librarymanager-observablelibrary</artifactId> <artifactId>librarymanager-observablelibrary</artifactId>
<version>1.0.0-dev-2</version> <version>1.0.0-dev-3</version>
</dependency> </dependency>
<dependency> <dependency>
......
package fr.univtln.bruno.coursjava.librarymanager.simplegui;
import fr.univtln.bruno.coursjava.librarymanager.IBibliotheque;
import javax.swing.*;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
/**
* Created by bruno on 03/10/14.
*/
public class AdherentListModel extends DefaultComboBoxModel<IBibliotheque.Adhérent> implements Observer {
private final List<IBibliotheque.Adhérent> adhérents;
public AdherentListModel(List<IBibliotheque.Adhérent> adhérents) {
this.adhérents = adhérents;
}
@Override
public void update(Observable o, Object arg) {
//si l'adhérent selectionné n'est plus dans la liste on déselectionne.
if (!adhérents.contains(getSelectedItem()))
setSelectedItem(null);
else System.out.println(getSelectedItem() + " in " + adhérents);
fireContentsChanged(this, 0, adhérents.size() - 1);
}
@Override
public int getSize() {
return adhérents.size();
}
@Override
public IBibliotheque.Adhérent getElementAt(int index) {
return adhérents.get(index);
}
}
package fr.univtln.bruno.coursjava.librarymanager.simplegui;
import fr.univtln.bruno.coursjava.librarymanager.Bibliotheque;
import fr.univtln.bruno.coursjava.librarymanager.BibliothequeModele;
import fr.univtln.bruno.coursjava.librarymanager.IBibliotheque;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Hello world!
*/
public class App {
public static void main(String[] args) {
Logger logger = Logger.getAnonymousLogger();
logger.setLevel(Level.FINEST);
BibliothequeModele bibliotheque = null;
bibliotheque = new BibliothequeModele<Bibliotheque>("Ma Bibliothèque");
new VueBibliotheque(bibliotheque);
bibliotheque.addAdhérent("jean.martin@test.fr", "Jean", "Martin", IBibliotheque.Adhérent.Statut.ENSEIGNANT);
bibliotheque.addAdhérent("mdurand@labas.com", "Marie", "Durand", IBibliotheque.Adhérent.Statut.ETUDIANT);
}
}
package fr.univtln.bruno.coursjava.librarymanager.simplegui;
import fr.univtln.bruno.coursjava.librarymanager.BibliothequeModele;
import fr.univtln.bruno.coursjava.librarymanager.IBibliotheque;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.PlainDocument;
import java.util.Collection;
import java.util.regex.Pattern;
/**
* Created by bruno on 03/10/14.
*/
public class ControleurBibliotheque {
public static final Pattern VALID_EMAIL_ADDRESS_REGEX =
Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE);
private VueBibliotheque vueBibliotheque;
private BibliothequeModele modeleBibliotheque;
private Document emailNouvelAdherentModel = new PlainDocument();
private Document nomNouvelAdherentModel = new PlainDocument();
private Document prenomNouvelAdherentModel = new PlainDocument();
public ControleurBibliotheque(final VueBibliotheque vueBibliotheque, BibliothequeModele modeleBibliotheque) {
this.vueBibliotheque = vueBibliotheque;
this.modeleBibliotheque = modeleBibliotheque;
DocumentListener ecouteurChangementTexte = new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
changedUpdate(e);
}
@Override
public void removeUpdate(DocumentEvent e) {
changedUpdate(e);
}
@Override
public void changedUpdate(DocumentEvent e) {
try {
if ((emailNouvelAdherentModel.getLength() == 0
|| !(VALID_EMAIL_ADDRESS_REGEX.matcher(emailNouvelAdherentModel.getText(0, emailNouvelAdherentModel.getLength())).find())
|| nomNouvelAdherentModel.getLength() == 0 || prenomNouvelAdherentModel.getLength() == 0))
vueBibliotheque.setCreationAdherentOk(false);
else
vueBibliotheque.setCreationAdherentOk(true);
} catch (BadLocationException e1) {
e1.printStackTrace();
}
}
};
emailNouvelAdherentModel.addDocumentListener(ecouteurChangementTexte);
nomNouvelAdherentModel.addDocumentListener(ecouteurChangementTexte);
prenomNouvelAdherentModel.addDocumentListener(ecouteurChangementTexte);
}
public Document getEmailNouvelAdherentModel() {
return emailNouvelAdherentModel;
}
public Document getNomNouvelAdherentModel() {
return nomNouvelAdherentModel;
}
public Document getPrenomNouvelAdherentModel() {
return prenomNouvelAdherentModel;
}
public void ajouterAdherent() {
try {
modeleBibliotheque.addAdhérent(
emailNouvelAdherentModel.getText(0, emailNouvelAdherentModel.getLength()), prenomNouvelAdherentModel.getText(0, prenomNouvelAdherentModel.getLength()),
nomNouvelAdherentModel.getText(0, nomNouvelAdherentModel.getLength()), IBibliotheque.Adhérent.Statut.ENSEIGNANT);
} catch (BadLocationException e) {
e.printStackTrace();
}
clearAdherent();
}
public void clearAdherent() {
try {
emailNouvelAdherentModel.remove(0, emailNouvelAdherentModel.getLength());
nomNouvelAdherentModel.remove(0, nomNouvelAdherentModel.getLength());
prenomNouvelAdherentModel.remove(0, prenomNouvelAdherentModel.getLength());
} catch (BadLocationException e) {
e.printStackTrace();
}
}
public void removeAdherent(IBibliotheque.Adhérent adhérent) {
modeleBibliotheque.remove(adhérent);
}
public Collection<IBibliotheque.Adhérent> getAdherents() {
return modeleBibliotheque.getAdhérents();
}
}
package fr.univtln.bruno.coursjava.librarymanager.simplegui;
import fr.univtln.bruno.coursjava.librarymanager.Bibliotheque;
import fr.univtln.bruno.coursjava.librarymanager.BibliothequeModele;
import fr.univtln.bruno.coursjava.librarymanager.IBibliotheque;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
/**
* Created by bruno on 03/10/14.
*/
public class VueBibliotheque extends JFrame {
private final BibliothequeModele<Bibliotheque> modeleBibliotheque;
private final ControleurBibliotheque controleurBibliotheque;
private final AdherentListModel adherentListModel;
private final JPanel adherentsSuppressionPanel = new JPanel(new GridBagLayout());
private final JPanel adherentDetailPanel = new JPanel(new GridBagLayout());
private final JPanel adherentAjoutPanel = new JPanel(new GridBagLayout());
private final JList<IBibliotheque.Adhérent> adhérentJList;
private final JButton supprimerAdherentJButton = new JButton("Supprimer Adhérent");
private final JComboBox<IBibliotheque.Adhérent> adhérentJComboBox;
private final JTextField emailAdherentAjoutjTextField;
private final JTextField nomAdherentAjoutjTextField;
private final JTextField prenomAdherentAjoutjTextField;
private final JLabel emailAdherentJLabel = new JLabel("Email");
private final JLabel nomAdherentJLabel = new JLabel("Nom");
private final JLabel prenomAdherentJLabel = new JLabel("Prénom");
private final JButton annulerAdherentJButton = new JButton("Annuler");
private final JButton ajouterAdherentJButton = new JButton("Ajouter Adhérent");
private final JTextField idAdherentDetailjTextField = new JTextField();
private final JTextField prenomAherentDetailjTextField = new JTextField();
private final JTextField nomAherentDetailjTextField = new JTextField();
public VueBibliotheque(BibliothequeModele modeleBibliotheque) {
super("Bibliotheque");
setSize(800, 600);
this.modeleBibliotheque = modeleBibliotheque;
this.controleurBibliotheque = new ControleurBibliotheque(this, modeleBibliotheque);
this.adherentListModel = new AdherentListModel(new ArrayList(this.modeleBibliotheque.getAdhérents()));
modeleBibliotheque.addObserver(adherentListModel);
adhérentJList = new JList<>(adherentListModel);
adhérentJList.setCellRenderer(new AdherentRenderer());
adhérentJList.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
setSuppressionAdherentOk(adhérentJList.getSelectedValue() != null);
}
});
adhérentJComboBox = new JComboBox<IBibliotheque.Adhérent>(adherentListModel);
adhérentJComboBox.setRenderer(new AdherentRenderer());
adhérentJComboBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
switch (e.getStateChange()) {
case ItemEvent.DESELECTED:
montrerDetail(null);
break;
case ItemEvent.SELECTED:
montrerDetail(adhérentJComboBox.getItemAt(adhérentJComboBox.getSelectedIndex()));
break;
}
}
});
supprimerAdherentJButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for (IBibliotheque.Adhérent adhérent : adhérentJList.getSelectedValuesList())
controleurBibliotheque.removeAdherent(adhérent);
}
});
ajouterAdherentJButton.setEnabled(false);
ajouterAdherentJButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
controleurBibliotheque.ajouterAdherent();
}
});
supprimerAdherentJButton.setEnabled(false);
annulerAdherentJButton.setEnabled(false);
annulerAdherentJButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
controleurBibliotheque.clearAdherent();
}
});
emailAdherentAjoutjTextField = new JTextField(controleurBibliotheque.getEmailNouvelAdherentModel(), "", 10);
nomAdherentAjoutjTextField = new JTextField(controleurBibliotheque.getNomNouvelAdherentModel(), "", 10);
prenomAdherentAjoutjTextField = new JTextField(controleurBibliotheque.getPrenomNouvelAdherentModel(), "", 10);
idAdherentDetailjTextField.setEditable(false);
prenomAherentDetailjTextField.setEditable(false);
nomAherentDetailjTextField.setEditable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridBagConstraints c = new GridBagConstraints();
// Suppression d'un adherent
adherentsSuppressionPanel.setBorder(BorderFactory.createTitledBorder("Suppression"));
c.fill = GridBagConstraints.BOTH;
c.anchor = GridBagConstraints.NORTHEAST;
c.insets = new Insets(2, 2, 2, 2);
c.weighty = 0.8;
c.gridx = 0;
c.gridy = 0;
adherentsSuppressionPanel.add(adhérentJList, c);
c.fill = GridBagConstraints.HORIZONTAL;
c.gridheight = 1;
c.weighty = 0.2;
c.gridx = 0;
c.gridy = 1;
adherentsSuppressionPanel.add(supprimerAdherentJButton, c);
//Le détail d'un adherent
adherentDetailPanel.setBorder(BorderFactory.createTitledBorder("Détails"));
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 1;
adherentDetailPanel.add(adhérentJComboBox, c);
c.gridx = 0;
c.gridy = 1;
adherentDetailPanel.add(idAdherentDetailjTextField, c);
c.gridx = 0;
c.gridy = 2;
adherentDetailPanel.add(nomAherentDetailjTextField, c);
c.gridx = 0;
c.gridy = 3;
adherentDetailPanel.add(prenomAherentDetailjTextField, c);
//L'ajout d'un adherent
adherentAjoutPanel.setBorder(BorderFactory.createTitledBorder("Ajout"));
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 1;
adherentAjoutPanel.add(emailAdherentJLabel, c);
c.gridx = 1;
c.gridy = 0;
adherentAjoutPanel.add(emailAdherentAjoutjTextField, c);
c.gridx = 0;
c.gridy = 1;
c.gridwidth = 1;
adherentAjoutPanel.add(nomAdherentJLabel, c);
c.gridx = 1;
c.gridy = 1;
adherentAjoutPanel.add(nomAdherentAjoutjTextField, c);
c.gridx = 0;
c.gridy = 2;
adherentAjoutPanel.add(prenomAdherentJLabel, c);
c.gridx = 1;
c.gridy = 2;
adherentAjoutPanel.add(prenomAdherentAjoutjTextField, c);
c.gridx = 0;
c.gridy = 3;
adherentAjoutPanel.add(annulerAdherentJButton, c);
c.gridx = 1;
c.gridy = 3;
adherentAjoutPanel.add(ajouterAdherentJButton, c);
//Ajout des panel de suppression, d'ajout et de detail
getContentPane().setLayout(new GridBagLayout());
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 0;
getContentPane().add(adherentDetailPanel, c);
c.fill = GridBagConstraints.BOTH;
c.gridx = 1;
c.gridy = 0;
getContentPane().add(adherentsSuppressionPanel, c);
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 2;
c.gridy = 0;
getContentPane().add(adherentAjoutPanel, c);
//pack();
setVisible(true);
}
private void setSuppressionAdherentOk(boolean b) {
supprimerAdherentJButton.setEnabled(b);
}
public void setCreationAdherentOk(boolean creationAdherentOk) {
ajouterAdherentJButton.setEnabled(creationAdherentOk);
annulerAdherentJButton.setEnabled(creationAdherentOk);
}
public void montrerDetail(IBibliotheque.Adhérent adhérent) {
if (adhérent == null) {
idAdherentDetailjTextField.setText("");
prenomAherentDetailjTextField.setText("");
nomAherentDetailjTextField.setText("");
} else {
idAdherentDetailjTextField.setText(String.valueOf(adhérent.getId()));
prenomAherentDetailjTextField.setText(adhérent.getPrenom());
nomAherentDetailjTextField.setText(adhérent.getNom());
}
}
private class AdherentListModel extends DefaultComboBoxModel<IBibliotheque.Adhérent> implements Observer {
private final java.util.List<IBibliotheque.Adhérent> adhérents;
public AdherentListModel(List<IBibliotheque.Adhérent> adhérents) {
this.adhérents = adhérents;
}
@Override
public void update(Observable o, Object arg) {
//On raffraichit la liste
this.adhérents.clear();
this.adhérents.addAll(controleurBibliotheque.getAdherents());
//si l'adhérent selectionné n'est plus dans la liste on déselectionne.
if (!adhérents.contains(getSelectedItem()))
setSelectedItem(null);
fireContentsChanged(this, 0, adhérents.size() - 1);
}
@Override
public int getSize() {
return adhérents.size();
}
@Override
public IBibliotheque.Adhérent getElementAt(int index) {
return adhérents.get(index);
}
}
class AdherentRenderer implements ListCellRenderer {
protected DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();
public Component getListCellRendererComponent(JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus) {
JLabel renderer = (JLabel) defaultRenderer.getListCellRendererComponent(list, value, index,
isSelected, cellHasFocus);
if (value instanceof IBibliotheque.Adhérent) {
IBibliotheque.Adhérent adherent = (IBibliotheque.Adhérent) value;
renderer.setText(adherent.getNom() + ", " + adherent.getPrenom());
}
return renderer;
}
}
}
package fr.univtln.bruno.d14.simpleihm;
/**
* Hello world!
*/
public class App {
public static void main(String[] args) {
ModeleBibliotheque bibliotheque = new ModeleBibliotheque();
new VueBibliotheque(bibliotheque);
bibliotheque.ajouterAuteur(new Auteur.AuteurBuilder().setPrenom("Jean").setNom("Martin").createAuteur());
bibliotheque.ajouterAuteur(new Auteur.AuteurBuilder().setPrenom("Marie").setNom("Durand").createAuteur());
}
}
package fr.univtln.bruno.d14.simpleihm;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
/**
* Created by bruno on 03/10/14.
*/
//Cette annotation sert à la serialisation en XML et en JSON
@XmlRootElement
public class Auteur implements Serializable {
public static int nbAuteur = 0;
public int ID;
@XmlElement
private String nom;
@XmlElement
private String prenom;
@XmlElement
private String biographie;
//Le constructeur sans paramètre est obligatoire pour la sérialisation en JSON/XML
public Auteur() {
}
public static class AuteurBuilder {
private String nom;
private String prenom;
private String biographie = null;
public AuteurBuilder setNom(String nom) {
this.nom = nom;
return this;
}
public AuteurBuilder setPrenom(String prenom) {
this.prenom = prenom;
return this;
}
public AuteurBuilder setBiographie(String biographie) {
this.biographie = biographie;
return this;
}
public Auteur createAuteur() {
return new Auteur(nbAuteur++, nom, prenom, biographie);
}
}
public String getBiographie() {
return biographie;
}
private Auteur(int id, String nom, String prenom, String biographie) {
this.ID = id;
this.nom = nom;
this.prenom = prenom;
this.biographie = biographie;
}
public String getNom() {
return nom;
}
public String getPrenom() {
return prenom;
}
@Override
public String toString() {
return nom + ", " + prenom;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Auteur auteur = (Auteur) o;
if (ID != auteur.ID) return false;
return true;
}
@Override
public int hashCode() {
return ID;
}
}
package fr.univtln.bruno.d14.simpleihm;
import javax.swing.*;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
/**
* Created by bruno on 03/10/14.
*/
public class AuteurListModel extends DefaultComboBoxModel<Auteur> implements Observer {
private final List<Auteur> auteurs;
public AuteurListModel(List<Auteur> auteurs) {
this.auteurs = auteurs;
}
@Override
public void update(Observable o, Object arg) {
//si l'auteur selectionné n'est plus dans la liste on déselectionne.
if (!auteurs.contains(getSelectedItem()))
setSelectedItem(null);
else System.out.println(getSelectedItem()+" in "+auteurs);
fireContentsChanged(this, 0, auteurs.size() - 1);
}
@Override
public int getSize() {
return auteurs.size();
}
@Override
public Auteur getElementAt(int index) {
return auteurs.get(index);
}
}
package fr.univtln.bruno.d14.simpleihm;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.PlainDocument;
/**
* Created by bruno on 03/10/14.
*/
public class ControleurBibliotheque {
private VueBibliotheque vueBibliotheque;
private ModeleBibliotheque modeleBibliotheque;
private Document nomNouvelAuteurModel = new PlainDocument();
private Document prenomNouvelAuteurModel = new PlainDocument();
public Document getNomNouvelAuteurModel() {
return nomNouvelAuteurModel;
}
public Document getPrenomNouvelAuteurModel() {
return prenomNouvelAuteurModel;
}
public ControleurBibliotheque(final VueBibliotheque vueBibliotheque, ModeleBibliotheque modeleBibliotheque) {
this.vueBibliotheque = vueBibliotheque;
this.modeleBibliotheque = modeleBibliotheque;
DocumentListener ecouteurChangementTexte = new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
changedUpdate(e);
}
@Override
public void removeUpdate(DocumentEvent e) {
changedUpdate(e);
}
@Override
public void changedUpdate(DocumentEvent e) {
if ((nomNouvelAuteurModel.getLength() == 0 || prenomNouvelAuteurModel.getLength() == 0))
vueBibliotheque.setCreationAuteurOk(false);
else
vueBibliotheque.setCreationAuteurOk(true);
}
};
nomNouvelAuteurModel.addDocumentListener(ecouteurChangementTexte);
prenomNouvelAuteurModel.addDocumentListener(ecouteurChangementTexte);
}
public void ajouterAuteur() {
try {
modeleBibliotheque.ajouterAuteur(
prenomNouvelAuteurModel.getText(0, prenomNouvelAuteurModel.getLength()),
nomNouvelAuteurModel.getText(0, nomNouvelAuteurModel.getLength()));
} catch (BadLocationException e) {
e.printStackTrace();
}
clearAuteur();
}
public void supprimerAuteur(final int ID) {
modeleBibliotheque.supprimerAuteur(ID);
}
public void supprimerAuteur(Auteur auteur) {
modeleBibliotheque.supprimerAuteur(auteur);
}
public void clearAuteur() {
try {
nomNouvelAuteurModel.remove(0, nomNouvelAuteurModel.getLength());
prenomNouvelAuteurModel.remove(0, prenomNouvelAuteurModel.getLength());
} catch (BadLocationException e) {
e.printStackTrace();
}
}
}
package fr.univtln.bruno.d14.simpleihm;
import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
/**
* Created by bruno on 03/10/14.
*/
public class ModeleBibliotheque extends Observable {
final List<Auteur> auteurs = new ArrayList();
public enum ModeleBibliothequeEvent {AUTEUR, DOCUMENT, MATERIEL}
public Auteur getAuteur(final int ID) {
for (Auteur auteur : auteurs)
if (auteur.ID == ID) return auteur;
return null;
}
public void ajouterAuteur(String prenom, String nom) {
ajouterAuteur(new Auteur.AuteurBuilder().setPrenom(prenom).setNom(nom).createAuteur());
}
public void ajouterAuteur(Auteur auteur) {
auteurs.add(auteur);
//On previent les observateurs du changement
setChanged();
notifyObservers(ModeleBibliothequeEvent.AUTEUR);
}
public void supprimerAuteur(final int ID) {
supprimerAuteur(getAuteur(ID));
}
public void supprimerAuteur(Auteur auteur) {
auteurs.remove(auteur);
//On previent les observateurs du changement
setChanged();
notifyObservers(ModeleBibliothequeEvent.AUTEUR);
}
public List<Auteur> getAuteurs() {
return auteurs;
}
}
package fr.univtln.bruno.d14.simpleihm;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
/**
* Created by bruno on 03/10/14.
*/
public class VueBibliotheque extends JFrame {
private final ModeleBibliotheque modeleBibliotheque;
private final ControleurBibliotheque controleurBibliotheque;
private final AuteurListModel auteurListModel;
private final JPanel auteursSuppressionPanel = new JPanel(new GridBagLayout());
private final JPanel auteurDetailPanel = new JPanel(new GridBagLayout());
private final JPanel auteurAjoutPanel = new JPanel(new GridBagLayout());
private final JList<Auteur> auteurSuppressionJList;
private final JButton supprimerAuteurJButton = new JButton("Supprimer Auteur");
private final JComboBox<Auteur> auteurDetailJComboBox;
private final JTextField nomAuteurAjoutjTextField;
private final JTextField prenomAuteurAjoutjTextField;
private final JLabel nomAuteurJLabel = new JLabel("Nom");
private final JLabel prenomAuteurJLabel = new JLabel("Prénom");
private final JButton annulerAuteurJButton = new JButton("Annuler");
private final JButton ajouterAuteurJButton = new JButton("Ajouter Auteur");
private final JTextField idAuteurDetailjTextField = new JTextField();
private final JTextField prenomAuteurDetailjTextField = new JTextField();
private final JTextField nomAuteurDetailjTextField = new JTextField();
public VueBibliotheque(ModeleBibliotheque modeleBibliotheque) {
super("Bibliotheque");
setSize(800, 600);
this.modeleBibliotheque = modeleBibliotheque;
this.controleurBibliotheque = new ControleurBibliotheque(this, modeleBibliotheque);
this.auteurListModel = new AuteurListModel(this.modeleBibliotheque.getAuteurs());
modeleBibliotheque.addObserver(auteurListModel);
auteurSuppressionJList = new JList<>(auteurListModel);
auteurSuppressionJList.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
setSuppressionAuteurOk(auteurSuppressionJList.getSelectedValue() != null);
}
});
auteurDetailJComboBox = new JComboBox<Auteur>(auteurListModel);
auteurDetailJComboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
switch (e.getStateChange()) {
case ItemEvent.DESELECTED:
montrerDetail(null);
break;
case ItemEvent.SELECTED:
montrerDetail(auteurDetailJComboBox.getItemAt(auteurDetailJComboBox.getSelectedIndex()));
break;
}
}
});
supprimerAuteurJButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for (Auteur auteur : auteurSuppressionJList.getSelectedValuesList())
controleurBibliotheque.supprimerAuteur(auteur);
}
});
ajouterAuteurJButton.setEnabled(false);
ajouterAuteurJButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
controleurBibliotheque.ajouterAuteur();
}
});
supprimerAuteurJButton.setEnabled(false);
annulerAuteurJButton.setEnabled(false);
annulerAuteurJButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
controleurBibliotheque.clearAuteur();
}
});
nomAuteurAjoutjTextField = new JTextField(controleurBibliotheque.getNomNouvelAuteurModel(), "", 10);
prenomAuteurAjoutjTextField = new JTextField(controleurBibliotheque.getPrenomNouvelAuteurModel(), "", 10);
idAuteurDetailjTextField.setEditable(false);
prenomAuteurDetailjTextField.setEditable(false);
nomAuteurDetailjTextField.setEditable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridBagConstraints c = new GridBagConstraints();
// Suppression d'un auteur
auteursSuppressionPanel.setBorder(BorderFactory.createTitledBorder("Suppression"));
c.fill = GridBagConstraints.BOTH;
c.anchor = GridBagConstraints.NORTHEAST;
c.insets = new Insets(2, 2, 2, 2);
c.weighty = 0.8;
c.gridx = 0;
c.gridy = 0;
auteursSuppressionPanel.add(auteurSuppressionJList, c);
c.fill = GridBagConstraints.HORIZONTAL;
c.gridheight = 1;
c.weighty = 0.2;
c.gridx = 0;
c.gridy = 1;
auteursSuppressionPanel.add(supprimerAuteurJButton, c);
//Le détail d'un auteur
auteurDetailPanel.setBorder(BorderFactory.createTitledBorder("Détails"));
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 1;
auteurDetailPanel.add(auteurDetailJComboBox, c);
c.gridx = 0;
c.gridy = 1;
auteurDetailPanel.add(idAuteurDetailjTextField, c);
c.gridx = 0;
c.gridy = 2;
auteurDetailPanel.add(nomAuteurDetailjTextField, c);
c.gridx = 0;
c.gridy = 3;
auteurDetailPanel.add(prenomAuteurDetailjTextField, c);
//L'ajout d'un auteur
auteurAjoutPanel.setBorder(BorderFactory.createTitledBorder("Ajout"));
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 1;
auteurAjoutPanel.add(nomAuteurJLabel, c);
c.gridx = 1;
c.gridy = 0;
auteurAjoutPanel.add(nomAuteurAjoutjTextField, c);
c.gridx = 0;
c.gridy = 1;
auteurAjoutPanel.add(prenomAuteurJLabel, c);
c.gridx = 1;
c.gridy = 1;
auteurAjoutPanel.add(prenomAuteurAjoutjTextField, c);
c.gridx = 0;
c.gridy = 2;
auteurAjoutPanel.add(annulerAuteurJButton, c);
c.gridx = 1;
c.gridy = 2;
auteurAjoutPanel.add(ajouterAuteurJButton, c);
//Ajout des panel de suppression, d'ajout et de detail
getContentPane().setLayout(new GridBagLayout());
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 0;
getContentPane().add(auteurDetailPanel, c);
c.fill = GridBagConstraints.BOTH;
c.gridx = 1;
c.gridy = 0;
getContentPane().add(auteursSuppressionPanel, c);
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 2;
c.gridy = 0;
getContentPane().add(auteurAjoutPanel, c);
//pack();
setVisible(true);
}
private void setSuppressionAuteurOk(boolean b) {
supprimerAuteurJButton.setEnabled(b);
}
public void setCreationAuteurOk(boolean creationAuteurOk) {
ajouterAuteurJButton.setEnabled(creationAuteurOk);
annulerAuteurJButton.setEnabled(creationAuteurOk);
}
public void montrerDetail(Auteur auteur) {
if (auteur==null) {
idAuteurDetailjTextField.setText("");
prenomAuteurDetailjTextField.setText("");
nomAuteurDetailjTextField.setText("");
}
else{
idAuteurDetailjTextField.setText(String.valueOf(auteur.ID));
prenomAuteurDetailjTextField.setText(auteur.getPrenom());
nomAuteurDetailjTextField.setText(auteur.getNom());
}
}
}
package fr.univtln.bruno.d14; package fr.univtln.bruno.coursjava.librarymanager.simplegui;
import junit.framework.Test; import junit.framework.Test;
import junit.framework.TestCase; import junit.framework.TestCase;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment