Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: jaxe/Jaxe.java


1   /*
2   Jaxe - Editeur XML en Java
3   
4   Copyright (C) 2002 Observatoire de Paris-Meudon
5   
6   Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier conformément aux dispositions de la Licence Publique Générale GNU, telle que publiée par la Free Software Foundation ; version 2 de la licence, ou encore (à votre choix) toute version ultérieure.
7   
8   Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER. Pour plus de détail, voir la Licence Publique Générale GNU .
9   
10  Vous devez avoir reçu un exemplaire de la Licence Publique Générale GNU en même temps que ce programme ; si ce n'est pas le cas, écrivez à la Free Software Foundation Inc., 675 Mass Ave, Cambridge, MA 02139, Etats-Unis.
11  */
12  
13  package jaxe;
14  
15  import java.io.File;
16  import java.util.*;
17  import javax.swing.*;
18  
19  import jaxe.macjaxe.MacJaxe;
20  import jaxe.macjaxe.MacJaxeFactory;
21  
22  /**
23   * Classe de départ de Jaxe, avec la gestion des évènements de l'application
24   */
25  public class Jaxe {
26  
27      // tous les objets Jaxe
28      public static Vector allFrames = new Vector();
29      
30      //static String newline = System.getProperty("line.separator");
31      static String newline = "\n";
32  
33      static String nomFichierCfg; // par défaut pour un nouveau document
34      static MacJaxe mac = null;
35      
36  
37      public Jaxe(String nomFichierCfg) {
38          this.nomFichierCfg = nomFichierCfg;
39          
40          Preferences.chargerPref();
41          
42          if (mac == null) {
43              try {
44                  mac = MacJaxeFactory.getInstance().buildMacJaxe();
45              } catch(Exception e) {
46                  // TODO better logging?
47                  e.printStackTrace();
48              }
49          }
50          
51          nouveau(null);
52      }
53      
54      // dans les 3 méthodes suivantes, jframe indique la fenêtre active
55      // jframe est facultatif, et peut être null
56      // si jframe est spécifié, elle peut être utilisée au lieu d'ouvrir une nouvelle fenêtre
57      
58      public static synchronized void nouveau(JaxeFrame jframe) {
59          if (jframe == null || (jframe.doc.modif || jframe.doc.fsave != null)) {
60              jframe = new JaxeFrame();
61              allFrames.add(jframe);
62          }
63          try {
64              jframe.initNew(nomFichierCfg);
65          } catch (Exception ex) {
66              System.err.println("Java bug 4353673");
67              ex.printStackTrace();
68              //JOptionPane.showMessageDialog(jframe, "Java bug 4353673",
69              //    "fatal Java bug", JOptionPane.ERROR_MESSAGE);
70              
71              // deuxième chance !
72              jframe.fermer(true);
73              jframe = new JaxeFrame();
74              allFrames.add(jframe);
75              jframe.initNew(nomFichierCfg);
76          }
77      }
78      
79      public static synchronized void ouvrir(File f, JaxeFrame jframe) {
80          if (f == null)
81              return;
82          for (int i=0; i<allFrames.size(); i++) {
83              JaxeFrame ji = (JaxeFrame)allFrames.get(i);
84              if (f.equals(ji.doc.fsave)) {
85                  ji.toFront();
86                  return;
87              }
88          }
89          if (jframe == null)
90              jframe = premiereFrame();
91          if (jframe == null || (jframe.doc.modif || jframe.doc.fsave != null)) {
92              jframe = new JaxeFrame();
93              allFrames.add(jframe);
94          }
95          jframe.ouvrir(f);
96      }
97      
98      public static void ouvrirConf(File f, JaxeFrame jframe) {
99          nomFichierCfg = f.getPath();
100         nouveau(jframe);
101     }
102     
103     public static void quitter() {
104         boolean vafermer = true;
105         for (int i=allFrames.size()-1; i>=0; i--) { // doClose modifie allFrames
106             JaxeFrame ji = (JaxeFrame)allFrames.get(i);
107             if (!ji.fermer(true))
108                 vafermer = false;
109         }
110         if (vafermer)
111             System.exit(0);
112     }
113     
114     public static void aPropos() {
115   JaxeFrame jframe = premiereFrame();
116         if (jframe != null)
117             jframe.getJaxeMenuBar().doAbout();
118         else
119             System.err.println("pas de fenêtre, pas de dialogue !");
120     }
121     
122     public static void preferences() {
123   JaxeFrame jframe = premiereFrame();
124         if (jframe != null)
125             jframe.getJaxeMenuBar().doPreferences();
126         else
127             System.err.println("pas de fenêtre, pas de dialogue !");
128     }
129     
130     public static JaxeFrame premiereFrame() {
131         if (allFrames.size() == 0)
132             return(null);
133         return((JaxeFrame)allFrames.get(0));
134     }
135     
136     public static void main(String args[]) {
137         if (System.getProperty("jaxe.config") != null)
138             new Jaxe(System.getProperty("jaxe.config"));
139         else if (args.length > 0 && args[0].endsWith("cfg.xml"))
140             new Jaxe(args[0]);
141         else {
142             File dir = new File("config");
143             if (!dir.exists()) {
144                 JOptionPane.showMessageDialog(null, JaxeResourceBundle.getRB().getString("config.PasTrouve"),
145                     JaxeResourceBundle.getRB().getString("config.ErreurLancement"), JOptionPane.ERROR_MESSAGE);
146                 System.exit(1);
147             }
148             File[] liste = dir.listFiles();
149             for (int i=0; i<liste.length; i++)
150                 if (liste[i].getName().endsWith("cfg.xml")) {
151                     Jaxe moi = new Jaxe(liste[i].getPath());
152                     if (args.length > 0 && args[0].endsWith(".xml"))
153                         moi.ouvrir(new File(args[0]), null);
154                     return;
155                 }
156             JOptionPane.showMessageDialog(null, JaxeResourceBundle.getRB().getString("config.AucunFichier"),
157                 JaxeResourceBundle.getRB().getString("config.ErreurLancement"), JOptionPane.ERROR_MESSAGE);
158             System.exit(1);
159         }
160     }
161 
162 }