Statistiques
| Révision :

root / tmp / org.txm.analec.rcp / src / visuAnalec / PanneauCommandesSchemas.java @ 1110

Historique | Voir | Annoter | Télécharger (19,51 ko)

1 481 mdecorde
/*
2 481 mdecorde
 * To change this template, choose Tools | Templates
3 481 mdecorde
 * and open the template in the editor.
4 481 mdecorde
 */
5 481 mdecorde
package visuAnalec;
6 481 mdecorde
7 481 mdecorde
import java.awt.*;
8 481 mdecorde
import java.awt.event.*;
9 481 mdecorde
import java.util.*;
10 481 mdecorde
import javax.swing.*;
11 481 mdecorde
import visuAnalec.Message.*;
12 481 mdecorde
import visuAnalec.PanneauEditeur.*;
13 481 mdecorde
import visuAnalec.elements.*;
14 481 mdecorde
import visuAnalec.texte.*;
15 481 mdecorde
import visuAnalec.texte.PanneauAffTexte.*;
16 481 mdecorde
import visuAnalec.texte.PanneauTexte.*;
17 481 mdecorde
import visuAnalec.util.*;
18 481 mdecorde
import visuAnalec.util.GMessages.*;
19 481 mdecorde
import visuAnalec.util.GVisu.*;
20 481 mdecorde
import visuAnalec.vue.*;
21 481 mdecorde
22 481 mdecorde
/**
23 481 mdecorde
 *
24 481 mdecorde
 * @author Bernard
25 481 mdecorde
 */
26 481 mdecorde
public class PanneauCommandesSchemas extends PanneauCommandes implements ActionListener {
27 481 mdecorde
  private PanneauChamps panneauChamps;
28 481 mdecorde
  private TypeComboBox saisieTypeSchemas;
29 481 mdecorde
  private ElementComboBox saisieSchema;
30 481 mdecorde
  private TypeComboBox saisieTypeElt;
31 481 mdecorde
  private ElementComboBox saisieElt;
32 481 mdecorde
  private JButton creeSchema;
33 481 mdecorde
  private JButton supprimeSchema;
34 481 mdecorde
  private JButton ajouteElement;
35 481 mdecorde
  private JButton oteElement;
36 481 mdecorde
  private JButton creeUniteElt;
37 481 mdecorde
  private int[] bornesSelectTexte;
38 481 mdecorde
  /*
39 481 mdecorde

40 481 mdecorde
   * CREATION PAR LE PANNEAU EDITEUR
41 481 mdecorde
   */
42 481 mdecorde
  PanneauCommandesSchemas(Vue vue, PanneauAffTexte pTexte, PanneauChamps pChamps) {
43 481 mdecorde
    super(vue, pTexte);
44 481 mdecorde
    JToolBar barre1 = new JToolBar();
45 481 mdecorde
    barre1.setPreferredSize(new Dimension(0, 22));
46 481 mdecorde
//    barre1.setBackground(PanneauTexte.getCouleurFond1());
47 481 mdecorde
    barre1.setAlignmentX(0.0f);
48 481 mdecorde
    //    barre1.setFloatable(false);
49 481 mdecorde
    add(barre1);
50 481 mdecorde
    JToolBar barre2 = new JToolBar();
51 481 mdecorde
    barre2.setPreferredSize(new Dimension(0, 22));
52 481 mdecorde
//    barre2.setBackground(PanneauTexte.getCouleurFond2());
53 481 mdecorde
    barre2.setAlignmentX(0.0f);
54 481 mdecorde
//     barre2.setFloatable(false);
55 481 mdecorde
    add(barre2);
56 481 mdecorde
    panneauChamps = pChamps;
57 481 mdecorde
    saisieTypeSchemas = new TypeComboBox(Schema.class);
58 481 mdecorde
    saisieTypeSchemas.addActionListener(this);
59 481 mdecorde
    saisieSchema = new ElementComboBox();
60 481 mdecorde
    saisieSchema.addActionListener(this);
61 481 mdecorde
    saisieTypeElt = new TypeComboBox(Element.class);
62 481 mdecorde
    saisieTypeElt.addActionListener(this);
63 481 mdecorde
    saisieElt = new ElementComboBox();
64 481 mdecorde
    saisieElt.addActionListener(this);
65 481 mdecorde
    creeSchema = new JButton(new GAction("Créer") {
66 481 mdecorde
      public void executer() {
67 481 mdecorde
        creerSchema();
68 481 mdecorde
      }
69 481 mdecorde
    });
70 481 mdecorde
    supprimeSchema = new JButton(new GAction("Supprimer") {
71 481 mdecorde
      public void executer() {
72 481 mdecorde
        supprimerSchema();
73 481 mdecorde
      }
74 481 mdecorde
    });
75 481 mdecorde
    ajouteElement = new JButton(new GAction("Ajouter") {
76 481 mdecorde
      public void executer() {
77 481 mdecorde
        ajouterElement();
78 481 mdecorde
      }
79 481 mdecorde
    });
80 481 mdecorde
    oteElement = new JButton(new GAction("Oter") {
81 481 mdecorde
      public void executer() {
82 481 mdecorde
        oterElement();
83 481 mdecorde
      }
84 481 mdecorde
    });
85 481 mdecorde
    creeUniteElt = new JButton(new GAction("Créer") {
86 481 mdecorde
      public void executer() {
87 481 mdecorde
        creerUniteElt();
88 481 mdecorde
      }
89 481 mdecorde
    });
90 481 mdecorde
    barre1.addSeparator();
91 481 mdecorde
    barre1.add(new TitreBarre("Schéma : ", PanneauTexte.getCouleurFond1()));
92 481 mdecorde
    barre1.addSeparator();
93 481 mdecorde
    barre1.add(saisieTypeSchemas);
94 481 mdecorde
    barre1.add(saisieSchema);
95 481 mdecorde
    barre1.addSeparator();
96 481 mdecorde
    barre1.add(creeSchema);
97 481 mdecorde
    barre1.addSeparator();
98 481 mdecorde
    barre1.add(supprimeSchema);
99 481 mdecorde
    barre2.addSeparator();
100 481 mdecorde
    barre2.add(new TitreBarre("Elément : ", PanneauTexte.getCouleurFond2()));
101 481 mdecorde
    barre2.addSeparator();
102 481 mdecorde
    barre2.add(saisieTypeElt);
103 481 mdecorde
    barre2.add(saisieElt);
104 481 mdecorde
    barre2.addSeparator();
105 481 mdecorde
    barre2.add(ajouteElement);
106 481 mdecorde
    barre2.add(oteElement);
107 481 mdecorde
    barre2.add(creeUniteElt);
108 481 mdecorde
  }
109 481 mdecorde
110 481 mdecorde
  /*
111 481 mdecorde
   * COMMANDES UTILISEES PAR LE PANNEAU EDITEUR
112 481 mdecorde
   */
113 481 mdecorde
  public void reinitialiser() {
114 481 mdecorde
    // typiquement, appelé par le panneau éditeur à la suite d'une modif de vue ou de structure
115 481 mdecorde
    saisieTypeSchemas.removeActionListener(this);
116 481 mdecorde
    saisieTypeSchemas.setModele(vue.getTypesSchemasAVoir());
117 481 mdecorde
    saisieTypeSchemas.effSelection();
118 481 mdecorde
    saisieTypeSchemas.addActionListener(this);
119 481 mdecorde
    saisieTypeElt.removeActionListener(this);
120 481 mdecorde
    saisieTypeElt.setModele(vue.getTypes(Unite.class), vue.getTypes(Relation.class), vue.getTypes(Schema.class));
121 481 mdecorde
    saisieTypeElt.effSelection();
122 481 mdecorde
    saisieTypeElt.addActionListener(this);
123 481 mdecorde
    initSaisieSchema();
124 481 mdecorde
    initSaisieElt();
125 481 mdecorde
    etatSelectRien();
126 481 mdecorde
    revalidate();
127 481 mdecorde
    repaint();
128 481 mdecorde
  }
129 481 mdecorde
  public void reafficher() {
130 481 mdecorde
    // potentiellement appelé par le panneau éditeur ?
131 481 mdecorde
    // appelé aussi par  traiterElementEvent
132 481 mdecorde
    if (saisieSchema.pasdeSelection()) {
133 481 mdecorde
      initSaisieSchema();
134 481 mdecorde
      if (saisieElt.pasdeSelection()) {
135 481 mdecorde
        initSaisieElt();
136 481 mdecorde
        etatSelectRien();
137 481 mdecorde
      } else {
138 481 mdecorde
        Element eltCourant = saisieElt.getSelection();
139 481 mdecorde
        initSaisieElt(eltCourant);
140 481 mdecorde
        etatSelectElt(eltCourant);
141 481 mdecorde
      }
142 481 mdecorde
    } else {
143 481 mdecorde
      Schema schCourant = (Schema) saisieSchema.getSelection();
144 481 mdecorde
      initSaisieSchema(schCourant);
145 481 mdecorde
      if (saisieElt.pasdeSelection()) {
146 481 mdecorde
        initSaisieElt();
147 481 mdecorde
        etatSelectSchema(schCourant);
148 481 mdecorde
      } else {
149 481 mdecorde
        Element eltCourant = saisieElt.getSelection();
150 481 mdecorde
        initSaisieElt(eltCourant);
151 481 mdecorde
        etatSelectSchemaElt(schCourant, eltCourant);
152 481 mdecorde
      }
153 481 mdecorde
    }
154 481 mdecorde
  }
155 481 mdecorde
   public void elementSuivant(int sens) {
156 481 mdecorde
    if (sens>0) saisieSchema.gotoSuivant();
157 481 mdecorde
    else saisieSchema.gotoPrecedent();
158 481 mdecorde
  }
159 481 mdecorde
 public Element elementSelectionne() {
160 481 mdecorde
    if (saisieSchema.pasdeSelection()) return null;
161 481 mdecorde
    return saisieSchema.getSelection();
162 481 mdecorde
  }
163 481 mdecorde
  public void editerElement(Element elt) {
164 481 mdecorde
    // appelé par le panneauEditeur : elt est forcément un schéma
165 481 mdecorde
    if (elt.getClass() != Schema.class) throw new UnsupportedOperationException("Erreur : classe incorrecte");
166 481 mdecorde
    editerSchema((Schema) elt);
167 481 mdecorde
  }
168 481 mdecorde
  public void traiterElementEvent(ElementEvent evt) {
169 481 mdecorde
    switch (evt.getModif()) {
170 481 mdecorde
      case AJOUT_SCHEMA:
171 481 mdecorde
      case MODIF_SCHEMA:
172 481 mdecorde
        Schema sch = (Schema) evt.getElement();
173 481 mdecorde
        editerSchema(sch);
174 481 mdecorde
        return;
175 481 mdecorde
      case SUP_SCHEMA:
176 481 mdecorde
        if (evt.getElement() == saisieSchema.getSelection()) {
177 481 mdecorde
          initSaisieSchema();
178 481 mdecorde
          initSaisieElt();
179 481 mdecorde
          etatSelectRien();
180 481 mdecorde
        } else {
181 481 mdecorde
          reafficher();
182 481 mdecorde
        }
183 481 mdecorde
        return;
184 481 mdecorde
      case AJOUT_UNITE:
185 481 mdecorde
        if (saisieTypeElt.getClasseSelection() == Unite.class ||
186 481 mdecorde
                evt.getElement().getType().equals(saisieTypeElt.getTypeSelection())) {
187 481 mdecorde
          initSaisieElt(evt.getElement());
188 481 mdecorde
        }
189 481 mdecorde
        reafficher();
190 481 mdecorde
        return;
191 481 mdecorde
      case SUP_UNITE:
192 481 mdecorde
      case SUP_RELATION:
193 481 mdecorde
      case BORNES_UNITE:
194 481 mdecorde
      case AJOUT_RELATION:
195 481 mdecorde
      case MODIF_VALEUR:
196 481 mdecorde
        reafficher();
197 481 mdecorde
        return;
198 481 mdecorde
      default:
199 481 mdecorde
        throw new UnsupportedOperationException("Cas " + evt.getModif() + " oublié dans un switch");
200 481 mdecorde
    }
201 481 mdecorde
  }
202 481 mdecorde
  public void editerSchema(Schema sch) {
203 481 mdecorde
    // appelé  par traiterElementEvent,
204 481 mdecorde
    // et aussi directement par le panneau éditeur quand il est sollicité par d'autres fenêtres
205 481 mdecorde
    if (!sch.getType().equals(saisieTypeSchemas.getTypeSelection())) {
206 481 mdecorde
      saisieTypeSchemas.removeActionListener(this);
207 481 mdecorde
      saisieTypeSchemas.setSelection(sch.getType());
208 481 mdecorde
      saisieTypeSchemas.addActionListener(this);
209 481 mdecorde
    }
210 481 mdecorde
    initSaisieSchema(sch);
211 481 mdecorde
    saisieSchema.setSelection(sch);
212 481 mdecorde
  }
213 481 mdecorde
  public void editerSchemaElement(Schema sch, Element elt) {
214 481 mdecorde
    // appelé  par le panneau éditeur  sollicité par VisuChaines
215 481 mdecorde
    if (!sch.getType().equals(saisieTypeSchemas.getTypeSelection())) {
216 481 mdecorde
      saisieTypeSchemas.removeActionListener(this);
217 481 mdecorde
      saisieTypeSchemas.setSelection(sch.getType());
218 481 mdecorde
      saisieTypeSchemas.addActionListener(this);
219 481 mdecorde
    }
220 481 mdecorde
    initSaisieSchema(sch);
221 481 mdecorde
    forceElt(elt);
222 481 mdecorde
  }
223 481 mdecorde
 public void editerElementTypeSchema(Element elt, String typesch) {
224 481 mdecorde
    // appelé  par le panneau éditeur  sollicité par VisuChaines
225 481 mdecorde
    if (!typesch.equals(saisieTypeSchemas.getTypeSelection())) {
226 481 mdecorde
      saisieTypeSchemas.removeActionListener(this);
227 481 mdecorde
      saisieTypeSchemas.setSelection(typesch);
228 481 mdecorde
      saisieTypeSchemas.addActionListener(this);
229 481 mdecorde
    }
230 481 mdecorde
    initSaisieSchema();
231 481 mdecorde
    forceElt(elt);
232 481 mdecorde
  }
233 481 mdecorde
  public ArrayList<ElementMarque> trouverElementsVises(Unite uniteVisee, TypeMarquage marqueUniteVisee,
234 481 mdecorde
          boolean avecId) {
235 481 mdecorde
    ArrayList<ElementMarque> eltsMarques = new ArrayList<ElementMarque>();
236 481 mdecorde
    ArrayList<Element> eltsVises;
237 481 mdecorde
    Element eltVise;
238 481 mdecorde
    switch (marqueUniteVisee) {
239 481 mdecorde
      case FOND1:
240 481 mdecorde
        eltsVises = Element.trouverElementsParUniteSousjacente(saisieSchema.getElements(), uniteVisee);
241 481 mdecorde
        for (Element elt : eltsVises) eltsMarques.add(new ElementMarque(
242 481 mdecorde
                  elt, marqueUniteVisee, avecId ? saisieSchema.getIdElement(elt) : null));
243 481 mdecorde
        return eltsMarques;
244 481 mdecorde
      case FOND1_2:
245 481 mdecorde
      case FOND2:
246 481 mdecorde
        eltsVises = Element.trouverElementsParUniteSousjacente(saisieElt.getElements(), uniteVisee);
247 481 mdecorde
        for (Element elt : eltsVises) eltsMarques.add(new ElementMarque(
248 481 mdecorde
                  elt, marqueUniteVisee, avecId ? saisieElt.getIdElement(elt) : null));
249 481 mdecorde
        return eltsMarques;
250 481 mdecorde
      case SELECT1:
251 481 mdecorde
        eltVise = saisieSchema.getSelection();
252 481 mdecorde
        eltsMarques.add(new ElementMarque(
253 481 mdecorde
                  eltVise, marqueUniteVisee, avecId ? saisieSchema.getIdElement(eltVise) : null));
254 481 mdecorde
        return eltsMarques;
255 481 mdecorde
      case SELECT1_2:
256 481 mdecorde
      case SELECT2:
257 481 mdecorde
        eltVise = saisieElt.getSelection();
258 481 mdecorde
        eltsMarques.add(new ElementMarque(
259 481 mdecorde
                eltVise, marqueUniteVisee, avecId ? saisieElt.getIdElement(eltVise) : null));
260 481 mdecorde
        return eltsMarques;
261 481 mdecorde
      default:
262 481 mdecorde
        throw new UnsupportedOperationException("Marquage non prévu : " + marqueUniteVisee);
263 481 mdecorde
264 481 mdecorde
    }
265 481 mdecorde
  }
266 481 mdecorde
  /*
267 481 mdecorde
   * ACTIONS DE L'UTILISATEUR : CHANGEMENTS D'ETAT
268 481 mdecorde
   */
269 481 mdecorde
  public void actionPerformed(ActionEvent evt) {
270 481 mdecorde
    try {
271 481 mdecorde
      if (evt.getSource() == saisieTypeSchemas) {
272 481 mdecorde
        initSaisieSchema();
273 481 mdecorde
        if (saisieElt.pasdeSelection()) etatSelectRien();
274 481 mdecorde
        else etatSelectElt(saisieElt.getSelection());
275 481 mdecorde
        return;
276 481 mdecorde
      }
277 481 mdecorde
      if (evt.getSource() == saisieTypeElt) {
278 481 mdecorde
        initSaisieElt();
279 481 mdecorde
        if (saisieSchema.pasdeSelection()) etatSelectRien();
280 481 mdecorde
        else etatSelectSchema((Schema) saisieSchema.getSelection());
281 481 mdecorde
        return;
282 481 mdecorde
      }
283 481 mdecorde
      if (evt.getSource() == saisieSchema) {
284 481 mdecorde
        if (saisieSchema.pasdeSelection()) {
285 481 mdecorde
          if (saisieElt.pasdeSelection()) etatSelectRien();
286 481 mdecorde
          else etatSelectElt(saisieElt.getSelection());
287 481 mdecorde
        } else {
288 481 mdecorde
          if (saisieElt.pasdeSelection()) etatSelectSchema((Schema) saisieSchema.getSelection());
289 481 mdecorde
          else etatSelectSchemaElt((Schema) saisieSchema.getSelection(), saisieElt.getSelection());
290 481 mdecorde
        }
291 481 mdecorde
        return;
292 481 mdecorde
      }
293 481 mdecorde
      if (evt.getSource() == saisieElt) {
294 481 mdecorde
        if (saisieElt.pasdeSelection()) {
295 481 mdecorde
          if (saisieSchema.pasdeSelection()) etatSelectRien();
296 481 mdecorde
          else etatSelectSchema((Schema) saisieSchema.getSelection());
297 481 mdecorde
        } else {
298 481 mdecorde
          if (saisieSchema.pasdeSelection()) etatSelectElt(saisieElt.getSelection());
299 481 mdecorde
          else etatSelectSchemaElt((Schema) saisieSchema.getSelection(), saisieElt.getSelection());
300 481 mdecorde
        }
301 481 mdecorde
        return;
302 481 mdecorde
      }
303 481 mdecorde
      throw new UnsupportedOperationException("Evénement non prévu : " + evt.paramString());
304 481 mdecorde
    } catch (Throwable ex) {
305 481 mdecorde
      GMessages.erreurFatale(ex);
306 481 mdecorde
    }
307 481 mdecorde
  }
308 481 mdecorde
  @Override
309 481 mdecorde
  public void traiterSourisEvent(SourisEvent evt) {
310 481 mdecorde
    switch (evt.getTypeEvent()) {
311 481 mdecorde
      case SELECT_RIEN:
312 481 mdecorde
        saisieElt.removeActionListener(this);
313 481 mdecorde
        saisieElt.effSelection();
314 481 mdecorde
        saisieElt.addActionListener(this);
315 481 mdecorde
        saisieSchema.effSelection();
316 481 mdecorde
        return;
317 481 mdecorde
      case SELECT_ELEMENT:
318 481 mdecorde
        switch (evt.getMarquageElementVise()) {
319 481 mdecorde
          case SELECT1:
320 481 mdecorde
            forceElt(evt.getElementVise());
321 481 mdecorde
            return;
322 481 mdecorde
          case SELECT2:
323 481 mdecorde
          case SELECT1_2:
324 481 mdecorde
            saisieSchema.effSelection();
325 481 mdecorde
            return;
326 481 mdecorde
          case FOND1:
327 481 mdecorde
            saisieSchema.setSelection(evt.getElementVise());
328 481 mdecorde
            return;
329 481 mdecorde
          case FOND2:
330 481 mdecorde
          case FOND1_2:
331 481 mdecorde
            saisieElt.setSelection(evt.getElementVise());
332 481 mdecorde
            return;
333 481 mdecorde
          default:
334 481 mdecorde
            throw new UnsupportedOperationException("Marquage non prévu : " + evt.getTypeEvent());
335 481 mdecorde
        }
336 481 mdecorde
      case SELECT_TEXTE:
337 481 mdecorde
        saisieElt.removeActionListener(this);
338 481 mdecorde
        saisieElt.effSelection();
339 481 mdecorde
        saisieElt.addActionListener(this);
340 481 mdecorde
        saisieSchema.removeActionListener(this);
341 481 mdecorde
        saisieSchema.effSelection();
342 481 mdecorde
        saisieSchema.addActionListener(this);
343 481 mdecorde
        bornesSelectTexte = evt.getBornesSelectionTexte();
344 481 mdecorde
        etatSelectTexte();
345 481 mdecorde
        return;
346 481 mdecorde
    }
347 481 mdecorde
    throw new UnsupportedOperationException("Evénement non prévu : " + evt.getTypeEvent());
348 481 mdecorde
  }
349 481 mdecorde
350 481 mdecorde
  /*
351 481 mdecorde
   * ACTIONS DE L'UTILISATEUR : BOUTONS
352 481 mdecorde
   */
353 481 mdecorde
  private void creerSchema() {
354 481 mdecorde
    vue.getCorpus().addSchemaSaisi(saisieTypeSchemas.getTypeSelection(), saisieElt.getSelection());
355 481 mdecorde
  }
356 481 mdecorde
  private void creerUniteElt() {
357 481 mdecorde
    if (vue.getCorpus().checkPresenceUnite(saisieTypeElt.getTypeSelection(), bornesSelectTexte[0], bornesSelectTexte[1]) &&
358 481 mdecorde
            !GMessages.confirmationAction("Dupliquer cette unité  ?")) return;
359 481 mdecorde
    vue.getCorpus().addUniteSaisie(saisieTypeElt.getTypeSelection(),  bornesSelectTexte[0], bornesSelectTexte[1]);
360 481 mdecorde
  }
361 481 mdecorde
  private void supprimerSchema() {
362 481 mdecorde
    if (!GMessages.confirmationAction("Supprimer le schéma sélectionné ?")) return;
363 481 mdecorde
    vue.getCorpus().supSchema((Schema) saisieSchema.getSelection());
364 481 mdecorde
  }
365 481 mdecorde
  private void ajouterElement() {
366 481 mdecorde
    vue.getCorpus().ajouterElementSchemaSaisi(saisieElt.getSelection(), (Schema) saisieSchema.getSelection());
367 481 mdecorde
  }
368 481 mdecorde
  private void oterElement() {
369 481 mdecorde
    vue.getCorpus().oterElementSchema(saisieElt.getSelection(), (Schema) saisieSchema.getSelection());
370 481 mdecorde
  }
371 481 mdecorde
372 481 mdecorde
  /*
373 481 mdecorde
   * GESTION INTERNE
374 481 mdecorde
   */
375 481 mdecorde
  private void etatSelectRien() { // ni Sch ni Elt n'ont été saisis
376 481 mdecorde
    if (saisieTypeElt.pasdeSelection()) {
377 481 mdecorde
      if (saisieTypeSchemas.pasdeSelection()) panneauTexte.pasDeMarquage();
378 481 mdecorde
      else panneauTexte.saisir(null,
379 481 mdecorde
                Element.getUnitesSousjacentes(saisieSchema.getElements()), TypeMarquage.FOND1);
380 481 mdecorde
    } else {
381 481 mdecorde
      if (saisieTypeSchemas.pasdeSelection()) panneauTexte.saisir(null,
382 481 mdecorde
                Element.getUnitesSousjacentes(saisieElt.getElements()), TypeMarquage.FOND2);
383 481 mdecorde
      else panneauTexte.saisir(null,
384 481 mdecorde
                Element.getUnitesSousjacentes(saisieSchema.getElements()), TypeMarquage.FOND1,
385 481 mdecorde
                Element.getUnitesSousjacentes(saisieElt.getElements()), TypeMarquage.FOND2);
386 481 mdecorde
    }
387 481 mdecorde
    panneauChamps.effacer();
388 481 mdecorde
    creeSchema.setEnabled(false);
389 481 mdecorde
    supprimeSchema.setEnabled(false);
390 481 mdecorde
    ajouteElement.setEnabled(false);
391 481 mdecorde
    oteElement.setEnabled(false);
392 481 mdecorde
    creeUniteElt.setEnabled(false);
393 481 mdecorde
  }
394 481 mdecorde
  private void etatSelectTexte() { // du texte a été sélectionné
395 481 mdecorde
    if (saisieTypeElt.pasdeSelection()) {
396 481 mdecorde
      if (saisieTypeSchemas.pasdeSelection()) panneauTexte.pasDeMarquage();
397 481 mdecorde
      else panneauTexte.saisir(null,
398 481 mdecorde
                Element.getUnitesSousjacentes(saisieSchema.getElements()), TypeMarquage.FOND1);
399 481 mdecorde
    } else {
400 481 mdecorde
      if (saisieTypeSchemas.pasdeSelection()) panneauTexte.saisir(null,
401 481 mdecorde
                Element.getUnitesSousjacentes(saisieElt.getElements()), TypeMarquage.FOND2);
402 481 mdecorde
      else panneauTexte.saisir(null,
403 481 mdecorde
                Element.getUnitesSousjacentes(saisieSchema.getElements()), TypeMarquage.FOND1,
404 481 mdecorde
                Element.getUnitesSousjacentes(saisieElt.getElements()), TypeMarquage.FOND2);
405 481 mdecorde
    }
406 481 mdecorde
    panneauChamps.effacer();
407 481 mdecorde
    creeSchema.setEnabled(false);
408 481 mdecorde
    supprimeSchema.setEnabled(false);
409 481 mdecorde
    ajouteElement.setEnabled(false);
410 481 mdecorde
    oteElement.setEnabled(false);
411 481 mdecorde
    if (!saisieTypeElt.pasdeSelection() && saisieTypeElt.getClasseSelection() == Unite.class)
412 481 mdecorde
      creeUniteElt.setEnabled(true);
413 481 mdecorde
  }
414 481 mdecorde
  private void etatSelectElt(Element elt) {  // seul Elt a été choisi
415 481 mdecorde
    if (saisieTypeSchemas.pasdeSelection()) panneauTexte.saisir(elt.getUnite0(),
416 481 mdecorde
              elt.getUnitesSousjacentes(), TypeMarquage.SELECT2);
417 481 mdecorde
    else panneauTexte.saisir(elt.getUnite0(), elt.getUnitesSousjacentes(), TypeMarquage.SELECT2,
418 481 mdecorde
              Element.getUnitesSousjacentes(saisieSchema.getElements()), TypeMarquage.FOND1);
419 481 mdecorde
    panneauChamps.afficher(elt);
420 481 mdecorde
    if (!saisieTypeSchemas.pasdeSelection()) {
421 481 mdecorde
      creeSchema.setEnabled(true);
422 481 mdecorde
      Boutons.setDefaut(creeSchema, true);
423 481 mdecorde
    }
424 481 mdecorde
    supprimeSchema.setEnabled(false);
425 481 mdecorde
    ajouteElement.setEnabled(false);
426 481 mdecorde
    oteElement.setEnabled(false);
427 481 mdecorde
    creeUniteElt.setEnabled(false);
428 481 mdecorde
  }
429 481 mdecorde
  private void etatSelectSchema(Schema sch) { // seul Sch a été choisi
430 481 mdecorde
    if (saisieTypeElt.pasdeSelection()) panneauTexte.saisir(sch.getUnite0(),
431 481 mdecorde
              sch.getUnitesSousjacentes(), TypeMarquage.SELECT1);
432 481 mdecorde
    else panneauTexte.saisir(sch.getUnite0(),
433 481 mdecorde
              sch.getUnitesSousjacentes(), TypeMarquage.SELECT1,
434 481 mdecorde
              Element.getUnitesSousjacentes(filtreSch(saisieElt.getElements(), (Schema[])saisieSchema.getElements())),
435 481 mdecorde
              TypeMarquage.FOND1_2,
436 481 mdecorde
              Element.getUnitesSousjacentes(saisieElt.getElements()), TypeMarquage.FOND2);
437 481 mdecorde
    panneauChamps.afficher(sch);
438 481 mdecorde
    creeSchema.setEnabled(false);
439 481 mdecorde
    supprimeSchema.setEnabled(true);
440 481 mdecorde
    ajouteElement.setEnabled(false);
441 481 mdecorde
    oteElement.setEnabled(false);
442 481 mdecorde
    creeUniteElt.setEnabled(false);
443 481 mdecorde
  }
444 481 mdecorde
  private void etatSelectSchemaElt(Schema sch, Element elt) {
445 481 mdecorde
    if (sch.contient(elt)) etatSelectSchemaEltInterne(sch, elt);
446 481 mdecorde
    else etatSelectSchemaEltExterne(sch, elt);
447 481 mdecorde
  }
448 481 mdecorde
  private void etatSelectSchemaEltInterne(Schema sch, Element elt) {
449 481 mdecorde
    panneauTexte.saisir(elt.getUnite0(),
450 481 mdecorde
            elt.getUnitesSousjacentes(), TypeMarquage.SELECT1_2,
451 481 mdecorde
            sch.getUnitesSousjacentes(), TypeMarquage.SELECT1);
452 481 mdecorde
    panneauChamps.afficher(elt);
453 481 mdecorde
    creeSchema.setEnabled(false);
454 481 mdecorde
    ajouteElement.setEnabled(false);
455 481 mdecorde
    if (sch.getContenu().size() > 1) {
456 481 mdecorde
      oteElement.setEnabled(true);
457 481 mdecorde
      supprimeSchema.setEnabled(false);
458 481 mdecorde
    } else {
459 481 mdecorde
      oteElement.setEnabled(false);
460 481 mdecorde
      supprimeSchema.setEnabled(true);
461 481 mdecorde
    }
462 481 mdecorde
    creeUniteElt.setEnabled(false);
463 481 mdecorde
  }
464 481 mdecorde
  private void etatSelectSchemaEltExterne(Schema sch, Element elt) {
465 481 mdecorde
    panneauTexte.saisir(elt.getUnite0(),
466 481 mdecorde
            sch.getUnitesSousjacentes(), TypeMarquage.SELECT1,
467 481 mdecorde
            elt.getUnitesSousjacentes(), TypeMarquage.SELECT2);
468 481 mdecorde
    panneauChamps.afficher(sch);
469 481 mdecorde
    creeSchema.setEnabled(false);
470 481 mdecorde
    supprimeSchema.setEnabled(false);
471 481 mdecorde
    ajouteElement.setEnabled(true);
472 481 mdecorde
    oteElement.setEnabled(false);
473 481 mdecorde
    creeUniteElt.setEnabled(false);
474 481 mdecorde
  }
475 481 mdecorde
  private void forceElt(Element elt) {
476 481 mdecorde
    if (saisieTypeElt.getClasseSelection() != elt.getClass() || !elt.getType().equals(saisieTypeElt.getTypeSelection())) {
477 481 mdecorde
      saisieTypeElt.removeActionListener(this);
478 481 mdecorde
      saisieTypeElt.setSelection(elt.getClass(), elt.getType());
479 481 mdecorde
      saisieTypeElt.addActionListener(this);
480 481 mdecorde
      initSaisieElt();
481 481 mdecorde
    }
482 481 mdecorde
    saisieElt.setSelection(elt);
483 481 mdecorde
  }
484 481 mdecorde
  private Element[] filtreSch(Element[] elts, Schema[] schs) {
485 481 mdecorde
    ArrayList<Element> elts1 = new ArrayList<Element>();
486 481 mdecorde
    for (Element elt : elts) for(Schema sch: schs) if(sch.getContenu().contains(elt)) {
487 481 mdecorde
      elts1.add(elt);
488 481 mdecorde
      break;
489 481 mdecorde
    }
490 481 mdecorde
    return elts1.toArray(new Element[0]);
491 481 mdecorde
  }
492 481 mdecorde
  private void initSaisieSchema(Schema sch) {
493 481 mdecorde
    saisieSchema.removeActionListener(this);
494 481 mdecorde
    if (saisieTypeSchemas.pasdeSelection()) saisieSchema.setModeleVide();
495 481 mdecorde
    else {
496 481 mdecorde
      String type0 = saisieTypeSchemas.getTypeSelection();
497 481 mdecorde
      Schema[] schemas = vue.getSchemasAVoir(type0);
498 481 mdecorde
      saisieSchema.setModele(schemas, vue.getIdSchemas(type0, schemas));
499 481 mdecorde
    }
500 481 mdecorde
    if (sch == null) saisieSchema.effSelection();
501 481 mdecorde
    else saisieSchema.setSelection(sch);
502 481 mdecorde
    saisieSchema.addActionListener(this);
503 481 mdecorde
    saisieSchema.revalidate();
504 481 mdecorde
  }
505 481 mdecorde
  private void initSaisieSchema() {
506 481 mdecorde
    initSaisieSchema(null);
507 481 mdecorde
  }
508 481 mdecorde
  private void initSaisieElt(Element elt) {
509 481 mdecorde
    saisieElt.removeActionListener(this);
510 481 mdecorde
    if (saisieTypeElt.pasdeSelection()) saisieElt.setModeleVide();
511 481 mdecorde
    else {
512 481 mdecorde
      Class<? extends Element> classe = saisieTypeElt.getClasseSelection();
513 481 mdecorde
      String type = saisieTypeElt.getTypeSelection();
514 481 mdecorde
      saisieElt.setModele(vue.getElements(classe, type), vue.getIdElements(classe, type));
515 481 mdecorde
    }
516 481 mdecorde
    if (elt == null) saisieElt.effSelection();
517 481 mdecorde
    else saisieElt.setSelection(elt);
518 481 mdecorde
    saisieElt.addActionListener(this);
519 481 mdecorde
    saisieElt.revalidate();
520 481 mdecorde
  }
521 481 mdecorde
  private void initSaisieElt() {
522 481 mdecorde
    initSaisieElt(null);
523 481 mdecorde
  }
524 481 mdecorde
}