https://hal.archives-ouvertes.fr/hal-02177293
Tip revision: a5c3a632ff52caf942ac0457ce1ec733926a867b authored by Software Heritage on 01 January 2004, 00:00:00 UTC
hal: Deposit 315 in collection hal
hal: Deposit 315 in collection hal
Tip revision: a5c3a63
FenetrePrincipale.java
package gui.principal;
import information.InformationIncompleteException;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
import javax.swing.JFileChooser;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import principal.Commun;
import resultat.VisionneurResultat;
import traitement.TraitementIncompletException;
import traitement.projet.Projet;
import fichier.ContenuFichierIncompatibleException;
import fichier.TypeFichierIncompatibleException;
import fichier.VersionFichierIncompatibleException;
import fichier.filtre.FileFilterProjet;
import fichier.filtre.FileViewRage;
import gui.dialogue.DialogueEvent;
import gui.dialogue.DialogueGeneral;
import gui.dialogue.DialogueListener;
import gui.panel.edition.projet.PanelProjet;
/**
* fenętre principale de l'application. Elle contient une barre de menu en haut, et une espčce de bureau
* dans lequel viennent s'ouvrir les fenętres internes.
*
* @author Vincent Labatut
* @version 1
*/
public class FenetrePrincipale extends javax.swing.JFrame implements DialogueListener
{ //----------------------------------------
// composants graphiques
//----------------------------------------
/**
* menu popup du bureau
*/
JPopupMenu jPopupMenu1;
/**
* fenętre d'édition du projet
*/
DialogueGeneral dialogueProjet;
/**
* fenętre de visualisation des résultats
*/
DialogueGeneral dialogueResultat;
/**
* menu item d'enregistrement du projet dans la barre de menu.
*/
JMenuItem jMenuItemEnregistrerProjet;
/**
* menu item d'exportation du projet dans la barre de menu.
*/
JMenuItem jMenuItemExporterProjet;
/**
* menu item d'enregistrement du projet dans le menu popup.
*/
JMenuItem jMenuItemPopEnregistrerProjet;
/**
* menu item d'exportation du projet dans le menu popup.
*/
JMenuItem jMenuItemPopExporterProjet;
//----------------------------------------
// Constructeurs
//----------------------------------------
/**
* construit la fenętre principale.
*
*/
public FenetrePrincipale()
{ super();
initGUI();
setDialogueProjet(null);
}
//----------------------------------------
// Initialisation
//----------------------------------------
/**
* initialise la GUI.
*
*/
public void initGUI()
{
JMenuBar jMenuBar;
//
JMenu jMenuFichier;
//
JMenuItem jMenuItemAPropos;
JSeparator jSeparator3;
JMenuItem jMenuItemSommaireAide;
JMenu jMenuAide;
//
JMenuItem jMenuItemQuitter;
JSeparator jSeparator2;
JScrollPane jScrollPane;
JMenuItem jMenuItemPopNouveauProjet;
JSeparator jSeparator5;
JMenuItem jMenuItemPopOuvrirProjet;
JMenuItem jMenuItemPopOuvrirResultat;
JSeparator jSeparator1;
JMenuItem jMenuItemOuvrirProjet;
JMenuItem jMenuItemOuvrirResultat;
JMenuItem jMenuItemNouveauProjet;
//
JMenu jMenuEdition;
JMenuItem jMenuItemUndo;
JMenuItem jMenuItemRedo;
//
Image image; //image de fond
JDesktopPane jDesktopPaneBureau;
{
//Set Look & Feel
try
{
javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
}
catch(Exception e)
{
e.printStackTrace();
}
}
try
{
setSize(new java.awt.Dimension(400,319));
setTitle(Commun.TITRE_PRINCIPAL);
setIconImage((new javax.swing.ImageIcon(getClass().getResource(Commun.PATH_ICONE_RAGE))).getImage());
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
//
image = (new ImageIcon(getClass().getResource(Commun.PATH_WALLPAP))).getImage();
jDesktopPaneBureau = new PanelFond(image);
// setContentPane(new PanelFond(image));
getContentPane().add(jDesktopPaneBureau, java.awt.BorderLayout.CENTER);
//
{
// jScrollPane = new JScrollPane();
{
jPopupMenu1 = new JPopupMenu();
// jScrollPane.add(jPopupMenu1);
jDesktopPaneBureau.add(jPopupMenu1);
{
jMenuItemPopNouveauProjet = new JMenuItem();
jPopupMenu1.add(jMenuItemPopNouveauProjet);
jMenuItemPopNouveauProjet.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//System.out.println("jMenuItemNouveauProjet.actionPerformed, event="+evt);
nouveauProjet();
}
});
jMenuItemPopNouveauProjet.setText(Commun.ACTION_CREER+" "+Commun.STRING_PROJET);
}
{
jSeparator5 = new JSeparator();
jPopupMenu1.add(jSeparator5);
}
{
jMenuItemPopOuvrirProjet = new JMenuItem();
jPopupMenu1.add(jMenuItemPopOuvrirProjet);
jMenuItemPopOuvrirProjet.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//System.out.println("jMenuItemOuvrirProjet.actionPerformed, event="+evt);
ouvrirProjet();
}
});
jMenuItemPopOuvrirProjet.setText(Commun.ACTION_OUVRIR+" "+Commun.STRING_PROJET);
}
{
jMenuItemPopEnregistrerProjet = new JMenuItem();
jPopupMenu1.add(jMenuItemPopEnregistrerProjet);
jMenuItemPopEnregistrerProjet.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//System.out.println("jMenuItemEnregistrerProjet.actionPerformed, event="+evt);
enregistrerProjet();
}
});
jMenuItemPopEnregistrerProjet.setText(Commun.ACTION_ENREGISTRER+" "+Commun.STRING_PROJET);
}
{
jMenuItemPopExporterProjet = new JMenuItem();
jPopupMenu1.add(jMenuItemPopExporterProjet);
jMenuItemPopExporterProjet.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//System.out.println("jMenuItemEnregistrerProjet.actionPerformed, event="+evt);
exporterProjet();
}
});
jMenuItemPopExporterProjet.setText(Commun.ACTION_EXPORTER+" "+Commun.STRING_PROJET);
}
{
jSeparator5 = new JSeparator();
jPopupMenu1.add(jSeparator5);
}
{
jMenuItemPopOuvrirResultat = new JMenuItem();
jPopupMenu1.add(jMenuItemPopOuvrirResultat);
jMenuItemPopOuvrirResultat.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//System.out.println("jMenuItemOuvrirResultat.actionPerformed, event="+evt);
ouvrirResultat();
}
});
jMenuItemPopOuvrirResultat.setText(Commun.ACTION_OUVRIR+" "+Commun.STRING_RESULTATS);
}
}
// this.getContentPane().add(jScrollPane, BorderLayout.CENTER);
}
// jScrollPane.addMouseListener(new MouseAdapter()
jDesktopPaneBureau.addMouseListener(new MouseAdapter()
{ public void mouseClicked(MouseEvent evt)
{ //System.out.println("jScrollPane1.mouseClicked, event="+evt);
// DEBUT DE MON CODE
if (evt.getButton()==MouseEvent.BUTTON3)
jPopupMenu1.show(evt.getComponent(),evt.getX(), evt.getY());
// FIN DE MON CODE
}
});
{
jMenuBar = new JMenuBar();
{
jMenuFichier = new JMenu();
jMenuBar.add(jMenuFichier);
jMenuFichier.setText(Commun.STRING_FICHIER);
{
jMenuItemNouveauProjet = new JMenuItem();
jMenuItemNouveauProjet.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//System.out.println("jMenuItemNouveauProjet.actionPerformed, event="+evt);
nouveauProjet();
}
});
jMenuFichier.add(jMenuItemNouveauProjet);
jMenuItemNouveauProjet.setText(Commun.ACTION_CREER+" "+Commun.STRING_PROJET);
}
{
jSeparator1 = new JSeparator();
jMenuFichier.add(jSeparator1);
}
{
jMenuItemOuvrirProjet = new JMenuItem();
jMenuItemOuvrirProjet.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//System.out.println("jMenuItemOuvrirProjet.actionPerformed, event="+evt);
ouvrirProjet();
}
});
jMenuFichier.add(jMenuItemOuvrirProjet);
jMenuItemOuvrirProjet.setText(Commun.ACTION_OUVRIR+" "+Commun.STRING_PROJET);
}
{
jMenuItemEnregistrerProjet = new JMenuItem();
jMenuItemEnregistrerProjet.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//System.out.println("jMenuItemEnregistrerProjet.actionPerformed, event="+evt);
enregistrerProjet();
}
});
jMenuFichier.add(jMenuItemEnregistrerProjet);
jMenuItemEnregistrerProjet.setText(Commun.ACTION_ENREGISTRER+" "+Commun.STRING_PROJET);
}
{
jMenuItemExporterProjet = new JMenuItem();
jMenuItemExporterProjet.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//System.out.println("jMenuItemEnregistrerProjet.actionPerformed, event="+evt);
exporterProjet();
}
});
jMenuFichier.add(jMenuItemExporterProjet);
jMenuItemExporterProjet.setText(Commun.ACTION_EXPORTER+" "+Commun.STRING_PROJET);
}
{
jSeparator1 = new JSeparator();
jMenuFichier.add(jSeparator1);
}
{
jMenuItemOuvrirResultat = new JMenuItem();
jMenuItemOuvrirResultat.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//System.out.println("jMenuItemOuvrirResultat.actionPerformed, event="+evt);
ouvrirResultat();
}
});
jMenuFichier.add(jMenuItemOuvrirResultat);
jMenuItemOuvrirResultat.setText(Commun.ACTION_OUVRIR+" "+Commun.STRING_RESULTATS);
}
{
jSeparator2 = new JSeparator();
jMenuFichier.add(jSeparator2);
}
{
jMenuItemQuitter = new JMenuItem();
jMenuItemQuitter.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//System.out.println("jMenuItemQuitter.actionPerformed, event="+evt);
quitter();
}
});
jMenuFichier.add(jMenuItemQuitter);
jMenuItemQuitter.setText(Commun.ACTION_QUITTER+" "+Commun.STRING_RAGE);
}
}
{
jMenuEdition = new JMenu();
jMenuBar.add(jMenuEdition);
jMenuEdition.setText(Commun.STRING_EDITION);
{
jMenuItemUndo = new JMenuItem();
jMenuItemUndo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//System.out.println("jMenuItemSommaireAide.actionPerformed, event="+evt);
defaire();
}
});
jMenuEdition.add(jMenuItemUndo);
jMenuItemUndo.setText(Commun.ACTION_UNDO);
}
{
jMenuItemRedo = new JMenuItem();
jMenuItemRedo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//System.out.println("jMenuItemSommaireAide.actionPerformed, event="+evt);
refaire();
}
});
jMenuEdition.add(jMenuItemRedo);
jMenuItemRedo.setText(Commun.ACTION_REDO);
}
}
{
jMenuAide = new JMenu();
jMenuBar.add(jMenuAide);
jMenuAide.setText(Commun.STRING_AIDE);
{
jMenuItemSommaireAide = new JMenuItem();
jMenuItemSommaireAide.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//System.out.println("jMenuItemSommaireAide.actionPerformed, event="+evt);
sommaireAide();
}
});
jMenuAide.add(jMenuItemSommaireAide);
jMenuItemSommaireAide.setText(Commun.STRING_SOMMAIRE);
}
{
jSeparator3 = new JSeparator();
jMenuAide.add(jSeparator3);
}
{
jMenuItemAPropos = new JMenuItem();
jMenuItemAPropos.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//System.out.println("jMenuItemAPropos.actionPerformed, event="+evt);
aPropos();
}
});
jMenuAide.add(jMenuItemAPropos);
jMenuItemAPropos.setText(Commun.STRING_APROPOS);
}
}
setJMenuBar(jMenuBar);
}
}
catch (Exception e)
{
e.printStackTrace();
}
center();
//setExtendedState(Frame.MAXIMIZED_BOTH);
}
/**
* centre cette fenętre par rapport ŕ l'écran.
*
*/
private void center()
{
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
Rectangle frame = getBounds();
setLocation((screen.width - frame.width)/2, (screen.height - frame.height)/2);
}
//----------------------------------------
// DialogueProjet
//----------------------------------------
/**
* renvoie la fenętre d'édition du projet.
*
* @return le dialogue utilisé comme fenętre d'édition du projet.
*/
public DialogueGeneral getDialogueProjet()
{ return dialogueProjet;
}
/**
* modifie la fenętre d'édition du projet.
*
* @param p le nouveau projet, sur lequel le nouveua dialogue doit ętre construit.
*/
public void setDialogueProjet(Projet p)
{ if (dialogueProjet != null)
{ dialogueProjet.removeDialogueListener(this);
dialogueProjet.dispose();
dialogueProjet = null;
}
if (p != null)
{ dialogueProjet = new DialogueGeneral(p,this,false);
dialogueProjet.addDialogueListener(this);
jMenuItemEnregistrerProjet.setEnabled(true);
jMenuItemExporterProjet.setEnabled(true);
jMenuItemPopEnregistrerProjet.setEnabled(true);
jMenuItemPopExporterProjet.setEnabled(true);
dialogueProjet.setSize(400, 300);
dialogueProjet.setVisible(true);
}
else
{ jMenuItemEnregistrerProjet.setEnabled(false);
jMenuItemExporterProjet.setEnabled(false);
jMenuItemPopEnregistrerProjet.setEnabled(false);
jMenuItemPopExporterProjet.setEnabled(false);
}
}
//----------------------------------------
// DialogueResultat
//----------------------------------------
/**
* renvoie la fenętre de visualisation des résultats.
*
* @return le dialogue utilisé comme fenętre de visualisation des résultats.
*/
public DialogueGeneral getDialogueResultat()
{ return dialogueResultat;
}
/**
* réinitialise la fenętre de visualisation des résultats.
*
*/
public void setDialogueResultat()
{ if (dialogueResultat != null)
{ dialogueResultat.removeDialogueListener(this);
dialogueResultat.dispose();
}
dialogueResultat = new DialogueGeneral(new VisionneurResultat(),this,false);
dialogueResultat.addDialogueListener(this);
dialogueResultat.setSize(400, 300);
dialogueResultat.setVisible(true);
}
//----------------------------------------
// Menus
//----------------------------------------
/**
* crée un nouveau projet.
*
*/
public void nouveauProjet()
{ JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fc.setDialogTitle(Commun.TITRE_PROJET_CREER);
fc.setFileView(new FileViewRage());
int returnVal = fc.showSaveDialog(this);
Projet proj = null;
if (returnVal == JFileChooser.APPROVE_OPTION)
try
{ proj = new Projet(fc.getSelectedFile());
proj.enregistrer();
}
catch (FileNotFoundException e)
{ e.printStackTrace();
String message = Commun.MESSAGE_ERREUR_FICHIER_INTROUVABLE+" "+e.getMessage();
JOptionPane.showMessageDialog(this,message,Commun.TITRE_ERREUR,JOptionPane.ERROR_MESSAGE);
// on réinit le projet
if (proj!=null)
{ proj.remove();
proj = null;
}
}
catch (IOException e)
{ e.printStackTrace();
String message = Commun.MESSAGE_ERREUR_FICHIER_ACCES+" "+e.getMessage();
JOptionPane.showMessageDialog(this,message,Commun.TITRE_ERREUR,JOptionPane.ERROR_MESSAGE);
// on réinit le projet
if (proj!=null)
{ proj.remove();
proj = null;
}
}
catch (InformationIncompleteException e)
{ e.printStackTrace();
String message = Commun.MESSAGE_ERREUR_INCOMPLETUDE+" "+e.getMessage();
JOptionPane.showMessageDialog(this,message,Commun.TITRE_ERREUR,JOptionPane.ERROR_MESSAGE);
// on réinit le projet
if (proj!=null)
{ proj.remove();
proj = null;
}
}
catch (TraitementIncompletException e)
{ e.printStackTrace();
String message = Commun.MESSAGE_ERREUR_INCOMPLETUDE+" "+e.getMessage();
JOptionPane.showMessageDialog(this,message,Commun.TITRE_ERREUR,JOptionPane.ERROR_MESSAGE);
// on réinit le projet
if (proj!=null)
{ proj.remove();
proj = null;
}
}
setDialogueProjet(proj);
}
/**
* ouvre un projet existant.
*
*/
public void ouvrirProjet()
{ JFileChooser fc = new JFileChooser();
fc.setDialogTitle(Commun.TITRE_FICHIER_OUVRIR);
fc.addChoosableFileFilter(new FileFilterProjet());
fc.setFileView(new FileViewRage());
int returnVal = fc.showOpenDialog(this);
Projet projet = null;
if (returnVal == JFileChooser.APPROVE_OPTION)
try
{ projet = Projet.ouvrir(fc.getSelectedFile());
}
catch (FileNotFoundException e)
{ e.printStackTrace();
String message = Commun.MESSAGE_ERREUR_FICHIER_INTROUVABLE+" "+e.getMessage();
JOptionPane.showMessageDialog(this,message,Commun.TITRE_ERREUR,JOptionPane.ERROR_MESSAGE);
}
catch (ContenuFichierIncompatibleException e)
{ e.printStackTrace();
String message = Commun.MESSAGE_ERREUR_FICHIER_CONTENU+" "+e.getMessage();
JOptionPane.showMessageDialog(this,message,Commun.TITRE_ERREUR,JOptionPane.ERROR_MESSAGE);
}
catch (TypeFichierIncompatibleException e)
{ e.printStackTrace();
String message = Commun.MESSAGE_ERREUR_FICHIER_PAS_PROJET+" "+e.getMessage();
JOptionPane.showMessageDialog(this,message,Commun.TITRE_ERREUR,JOptionPane.ERROR_MESSAGE);
}
catch (VersionFichierIncompatibleException e)
{ e.printStackTrace();
String message = Commun.MESSAGE_ERREUR_FICHIER_VERSION+" "+e.getMessage();
JOptionPane.showMessageDialog(this,message,Commun.TITRE_ERREUR,JOptionPane.ERROR_MESSAGE);
}
catch (IOException e)
{ e.printStackTrace();
String message = Commun.MESSAGE_ERREUR_FICHIER_ACCES+" "+e.getMessage();
JOptionPane.showMessageDialog(this,message,Commun.TITRE_ERREUR,JOptionPane.ERROR_MESSAGE);
}
setDialogueProjet(projet);
}
/**
* enregistre le projet actuel.
*
*/
public void enregistrerProjet()
{ if (dialogueProjet != null)
((PanelProjet)dialogueProjet.getPanel()).enregistrerProjet();
}
/**
* enregistre le projet actuel sous un autre nom.
*
*/
public void exporterProjet()
{ if (dialogueProjet != null)
((PanelProjet)dialogueProjet.getPanel()).exporterProjet();
}
/**
* ouvre une session de résultats.
*
*/
public void ouvrirResultat()
{ setDialogueResultat();
}
/**
* ferme l'application.
*
*/
public void quitter()
{ setDialogueProjet(null);
dispose();
}
/**
* affiche le sommaire de l'aide.
*
*/
public void sommaireAide()
{
}
/**
* affiche la fenętre d'ŕ propos.
*
*/
public void aPropos()
{ try
{ DialoguePropos inst = new DialoguePropos(this);
//inst.setSelected(true);
//int coef = raffraichirCompteurFenetre();
//inst.setLocation(this.getX()+coef*50, this.getY()+coef*50);
inst.setVisible(true);
}
catch (Exception e)
{ e.printStackTrace();
}
}
//----------------------------------------
// This
//----------------------------------------
/*
*
*/
public void dispose()
{ if (dialogueProjet != null)
{ dialogueProjet.removeDialogueListener(this);
dialogueProjet.dispose();
}
if (dialogueResultat != null)
{ dialogueResultat.removeDialogueListener(this);
dialogueResultat.dispose();
}
try
{ finalize();
}
catch (Throwable e)
{ e.printStackTrace();
}
super.dispose();
}
//----------------------------------------
// DialogueListener
//----------------------------------------
/*
*
*/
public void dialogueRaffr(DialogueEvent e)
{
}
/*
*
*/
public void dialogueSuppr(DialogueEvent e)
{ if (e.getSource() == dialogueProjet)
{ dialogueProjet.removeDialogueListener(this);
dialogueProjet = null;
jMenuItemEnregistrerProjet.setEnabled(false);
jMenuItemExporterProjet.setEnabled(false);
jMenuItemPopEnregistrerProjet.setEnabled(false);
jMenuItemPopExporterProjet.setEnabled(false);
}
else if (e.getSource() == dialogueResultat)
{ dialogueResultat.removeDialogueListener(this);
dialogueResultat = null;
}
}
//----------------------------------------
// Undo/Redo
//----------------------------------------
/**
* annule la derničre action effectuée dans le projet actuel.
*/
public void defaire()
{ //((PanelProjet)dialogueProjet.getPanel()).getProjet().defaire();
}
/**
* restaure la derničre action annulée pour le projet actuel.
*/
public void refaire()
{ //((PanelProjet)dialogueProjet.getPanel()).getProjet().defaire();
}
}