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


public class LesDialogs2 extends JFrame 
                         implements ActionListener {

  JPanel toolbar;
  JLabel statusline;
  JButton open1, hide1, open2, hide2, quit;
  JTextArea textArea;
  JDialog mondialog, mondialogModal;


  public static void main(String argv[]) {
    LesDialogs2 toplevel = new LesDialogs2();
    // initialiser le titre, la disposition et rendre visible
    toplevel.setTitle("Les Dialogs 2");
    toplevel.pack();
    toplevel.show();
  }

  public LesDialogs2() {
    Container contentPane = getContentPane();

    // LesDialogs1 herite de Frame => BorderLayout par défaut

    // "toolbar" au "nord" de la fenêtre principale
    toolbar = new JPanel(); 
    contentPane.add(BorderLayout.NORTH, toolbar);

    toolbar.add(open1 = new JButton("Open 1"));
    toolbar.add(hide1 = new JButton("Hide 1"));
    toolbar.add(open2 = new JButton("Open 2"));
    toolbar.add(hide2 = new JButton("Hide 2"));
    toolbar.add(quit  = new JButton("Quit"));

    // associer un ActionListener aux Buttons
    open1.addActionListener(this);
    hide1.addActionListener(this);
    open2.addActionListener(this);
    hide2.addActionListener(this);
    quit.addActionListener(this);

    // Zone de texte (au "centre" de la fenêtre principale)
    textArea = new JTextArea(10, 25);
    textArea.setBackground(Color.white);
    contentPane.add(BorderLayout.CENTER, textArea);

    // "status line"
    statusline = new JLabel("Ready");
    contentPane.add(BorderLayout.SOUTH, statusline);

    // creer les Dialogs sans les ouvrir
    mondialog = new MonDialog(this, "Objet MonDialog", false);
    mondialogModal = new MonDialog(this, "Objet MonDialog Modal", true);
  }


  // méthode appelée quand on clique Open*, Hide* ou Quit

  public void actionPerformed(ActionEvent e) {
    Object source = e.getSource();

    if (source == open1) 
      mondialog.show();
    else if (source == hide1) 
      mondialog.setVisible(false);
    else if (source == open2) 
      mondialogModal.show();
    else if (source == hide2) 
      mondialogModal.setVisible(false);
    else if (source == quit) 
      System.exit(0);
  }
}


class MonDialog extends JDialog
                implements ActionListener {

  public MonDialog(JFrame frame, String title, boolean modal) {

    // appeler le constructeur de la super-classe
    // NB: doit etre en premiere ligne
    super(frame, title, modal);

    Container dialogContent = getContentPane();

    JLabel label = new JLabel("Valeur");
    JTextField textField = new JTextField(20);
    JButton ok = new JButton("Ok");

    dialogContent.add(BorderLayout.NORTH,  label);
    dialogContent.add(BorderLayout.CENTER, textField);
    dialogContent.add(BorderLayout.SOUTH,  ok);

    pack();		// NE PAS OUBLIER !
  }

  public void actionPerformed(ActionEvent e) {
    // a completer ...
  }
}


