Untitled

                Never    
Java
       
package ihm.tp4.vue;

import ihm.tp4.controleurs.ControleurAuteur;
import ihm.tp4.controleurs.ControleurLivre;
import ihm.tp4.controleurs.ControleurPrecedent;
import ihm.tp4.controleurs.ControleurSuivant;
import ihm.tp4.controleurs.ControleurSupprimer;
import ihm.tp4.modele.Auteur;
import ihm.tp4.modele.Bibliotheque;
import ihm.tp4.modele.Livre;

import javax.swing.*;
import java.awt.*;

/**
 * @author lanoix-a
 * @version 2019
 */
public class AppliBibliotheque extends JFrame {

    // La vue connait le modèle
    private Bibliotheque biblio;

    // Les éléments de la vue soumis à modification
    private JButton livreSuivant;
    private JButton livrePrecedent;
    private JButton supprimerLivre;
    private JLabel afficheTitre;
    private JLabel afficheCategorie;
    private JLabel afficheAuteur;

    private JTextField zoneTexteTitre;
    private ButtonGroup group;
    private JRadioButton horror;
    private JRadioButton fantasy;
    private JRadioButton sf;
    private JComboBox choixAuteurs;

    private JTextField zoneTexteNom;
    private JTextField zoneTextePrenom;

    /**
     * consrtruit une nouvelle fenêtre
     *
     * @param titre titre de la fenêtre
     */
    public AppliBibliotheque(String titre) {
        super(titre);

        // création d'une nouvelle bibliothèque
        biblio = new Bibliotheque();

        // mise en page des différents JComponents
        JPanel zones = new JPanel();
        zones.setLayout(new GridLayout(3, 1));
        this.getContentPane().add(zones);

        // JComponents affichant un livre :
        JPanel panelAffich = new JPanel();
        panelAffich.setLayout(new BorderLayout());
        panelAffich.setBorder(BorderFactory
                .createTitledBorder("Consultation des livres"));
        livreSuivant = new JButton(">");
        livrePrecedent = new JButton("<");
        panelAffich.add(livreSuivant, BorderLayout.EAST);
        panelAffich.add(livrePrecedent, BorderLayout.WEST);
        livrePrecedent.setEnabled(false);
        JPanel panelAffich2 = new JPanel();
        panelAffich2.setLayout(new GridLayout(3, 1));
        afficheTitre = new JLabel("");
        panelAffich2.add(afficheTitre);
        afficheCategorie = new JLabel("");
        panelAffich2.add(afficheCategorie);
        afficheAuteur = new JLabel("");
        panelAffich2.add(afficheAuteur);
        panelAffich.add(panelAffich2, BorderLayout.CENTER);
        zones.add(panelAffich);
        // affiche le 1er livre
        modifierAffichageLivre();

        // JComponents ajoutant un auteur
        JPanel panelAuteur = new JPanel();
        panelAuteur.setLayout(new BorderLayout());
        panelAuteur.setBorder(BorderFactory
                .createTitledBorder("Ajout d'un auteur"));
        JButton ajoutAuteur = new JButton("+");
        panelAuteur.add(ajoutAuteur, BorderLayout.EAST);
        JPanel panelAuteur2 = new JPanel();
        panelAuteur2.setLayout(new GridLayout(4, 1));
        panelAuteur2.add(new JLabel("Nom :"));
        zoneTexteNom = new JTextField("");
        zoneTexteNom.setColumns(40);
        panelAuteur2.add(zoneTexteNom);
        panelAuteur2.add(new JLabel("Prénom :"));
        zoneTextePrenom = new JTextField("");
        zoneTextePrenom.setColumns(40);
        panelAuteur2.add(zoneTextePrenom);
        panelAuteur.add(panelAuteur2, BorderLayout.CENTER);
        zones.add(panelAuteur);

        // JComponents ajoutant un livre
        JPanel panelAjout = new JPanel();
        panelAjout.setLayout(new BorderLayout());
        panelAjout.setBorder(BorderFactory
                .createTitledBorder("Ajout d'un livre"));
        JButton ajoutLivre = new JButton("+");
        supprimerLivre = new JButton("-");
        panelAjout.add(supprimerLivre, BorderLayout.WEST);
        panelAjout.add(ajoutLivre, BorderLayout.EAST);
        JPanel panelAjout2 = new JPanel();
        panelAjout2.setLayout(new GridLayout(4, 1));
        panelAjout2.add(new JLabel("Titre :"));
        zoneTexteTitre = new JTextField("");
        zoneTexteTitre.setColumns(40);
        panelAjout2.add(zoneTexteTitre);
        horror = new JRadioButton("Horror");
        fantasy = new JRadioButton("Fantasy");
        sf = new JRadioButton("SF");
        ButtonGroup group = new ButtonGroup();
        group.add(horror);
        group.add(fantasy);
        group.add(sf);
        panelAjout2.add(horror);
        panelAjout2.add(fantasy);
        panelAjout2.add(sf);
        choixAuteurs = new JComboBox(biblio.donneTousLesAuteurs());
        panelAjout2.add(choixAuteurs);
        panelAjout.add(panelAjout2, BorderLayout.CENTER);
        zones.add(panelAjout);
        
        


        // Abonnement
        // les controleurs connaissent le modèle ET la vue

        // TODO
        ControleurSuivant bouton1 = new ControleurSuivant(this,this.biblio);
        livreSuivant.addActionListener(bouton1);
        ControleurPrecedent bouton2 = new ControleurPrecedent(this,this.biblio);
        livrePrecedent.addActionListener(bouton2);
        ControleurAuteur bouton3 = new ControleurAuteur(this,this.biblio);
        ajoutAuteur.addActionListener(bouton3);
        ControleurLivre bouton4 = new ControleurLivre(this,this.biblio);
        ajoutLivre.addActionListener(bouton4);
        ControleurSupprimer bouton5 = new ControleurSupprimer(this,this.biblio);
        supprimerLivre.addActionListener(bouton5);
        

        /* **************** */

        this.setPreferredSize(new Dimension(500, 370));
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        this.pack();
        this.setVisible(true);
    }


    /**
     * méthode principale éxécutable
     *
     * @param args
     */
    public static void main(String[] args) {
        new AppliBibliotheque("Ma Bibliothèque");
    }

    /**
     * modifie la vue affichant un livre en récupérant les données dans le
     * modèle
     */
    public void modifierAffichageLivre() {
        Livre livre = biblio.donneLivre();
        System.out.println(livre);
        afficheTitre.setText("<html><b>"+livre.donneTitre()+"</b></html>");
        afficheCategorie.setText(livre.donneCategorie());
        afficheAuteur.setText("<html><i>"+livre.donneAuteur().toString()+"</i></html>");
    }

    /**
     * @return le texte présent dans le JTextField zoneTexteNom
     */
    public String donneNomAjout() {
        return zoneTexteNom.getText();
    }

    /**
     * @return le texte présent dans le JTextField zoneTextePrenom
     */
    public String donnePrenomAjout() {
        return zoneTextePrenom.getText();
    }

    /**
     * ajoute un auteur à la liste déroulante des auteurs
     *
     * @param nouveau auteur à ajouter
     */
    public void ajoutChoixAuteurs(Auteur nouveau) {
        choixAuteurs.addItem(nouveau);
    }

    /**
     * @return le texte présent dans la JTextField zoneTexteTitre
     */
    public String donneTitreAjout() {
        return zoneTexteTitre.getText();
    }

    /**
     * @return la catégorie choisie dans la liste déroulante des catégories
     */
    public String donneCategorieAjout() {
    	if(horror.isSelected()) {
    		return horror.getText();
    	}
    	if(fantasy.isSelected()) {
    		return fantasy.getText();
    	}
    	if(sf.isSelected()) {
    		return sf.getText();
    	}
    	else {
    		return "";
    	}
    }

    /**
     * @return l'auteur choisi dans la liste déroulante des auteurs
     */
    public Auteur donneAuteurAjout() {
        return (Auteur) choixAuteurs.getSelectedItem();
    }

    /**
     * active / désactive le Bouton permettant de passer au livre suivant
     *
     * @param etat vrai si le bouton doit être activé
     */
    public void activerBoutonSuivant(boolean etat) {
        livreSuivant.setEnabled(etat);
    }

    /**
     * active / désactive le Bouton permettant de passer au livre précédent
     *
     * @param etat vrai si le bouton doit être activé
     */
    public void activerBoutonPrecedent(boolean etat) {
        livrePrecedent.setEnabled(etat);
    }


}

Raw Text