import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.Vector;
/**
* Interface graphique de l'application
* Gere les entree-sorties de l'utilisateur
*/
public class Graphique extends JFrame implements Runnable,ActionListener {
private JTextArea texte = new JTextArea(); //zone d'affichage du texte des discussions
private JTextField saisie = new JTextField(); //zone de saisie du texte de l'utilisateur
private JList liste = new JList(); //liste d'affichage des images trouvees dans le reseau
private JButton valider = new JButton("OK"); //bouton de validation du texte saisi
private JButton chercher = new JButton("Chercher"); //bouton de lancement de la recherche des images dans le reseau
private JButton selectionner = new JButton("Afficher"); //bouton de selection d'une image
private MesPairs pair = null; //Pair maitre de l'interface graphique
/**
* Constructeur de l'interface graphique
*/
public Graphique(String nom,MesPairs mp) {
super(nom); //nom du pair affiche en haut de la fenetre
//reglages de parametres graphiques
setSize(600,350);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container pane = getContentPane();
pane.setLayout(null);
texte.setEditable(false);
JScrollPane scroll_texte = new JScrollPane(texte);
JScrollPane scroll_liste = new JScrollPane(liste);
//instanciation du pair
pair = mp;
//placement des elements graphiques sur la fenetre
scroll_texte.setBounds(10,10,350,250);
scroll_liste.setBounds(400,10,170,200);
saisie.setBounds(10,280,300,25);
valider.setBounds(320,280,60,25);
chercher.setBounds(435,225,100,25);
selectionner.setBounds(435,260,100,25);
//ajout d'ecoute d'evenement sur les boutons
valider.addActionListener(this);
chercher.addActionListener(this);
selectionner.addActionListener(this);
//ajout des composants graphiques a la fenetre
pane.add(scroll_texte);
pane.add(scroll_liste);
pane.add(saisie);
pane.add(valider);
pane.add(chercher);
pane.add(selectionner);
setContentPane(pane);
}
/**
* Lancement de l'interface Graphique
*/
public void run() {
setVisible(true);
}
/**
* Affichage d'un message recu dans la zone de texte
*/
public void affiche(String chaine) {
texte.append(chaine+"\n");
}
/**
* Affichage de la liste des documents connus sur le r�seau
*/
public void afficheListe(Vector liste_doc) {
Vector affiche = new Vector();
//recuperation des noms des documents pour affichage dans la zone prevue
for (int i=0;i<liste_doc.size();i++) {
MesDocuments doc = (MesDocuments) liste_doc.get(i);
affiche.add(doc.getNom());
}
//affichage de la liste de nom des documents
liste.setListData(affiche);
}
/**
* Gestion des evenements utilisateurs de l'interface graphique
*/
public void actionPerformed(ActionEvent evt) {
//activation du bouton "valider"
if (evt.getSource()==valider) {
pair.sendMessage(saisie.getText());
saisie.setText("");
}
//activation du bouton "chercher"
if (evt.getSource()==chercher) {
pair.chercherDocument();
}
//activation du bouton "afficher"
if (evt.getSource()==selectionner) {
//recuperation des valeurs selectionnees dans la liste des documents
String valeur = (String) liste.getSelectedValue();
int indice = liste.getSelectedIndex();
if (valeur != null) {
pair.selectionDocument(indice);
}
}
}
}