Statistiques
| Révision :

root / tmp / org.txm.analec.rcp / src / visuAnalec / PanneauCommandesUnites.java @ 836

Historique | Voir | Annoter | Télécharger (9,2 ko)

1
/*
2
 * To change this template, choose Tools | Templates
3
 * and open the template in the editor.
4
 */
5
package visuAnalec;
6

    
7
import java.awt.*;
8
import java.awt.event.*;
9
import java.util.*;
10
import javax.swing.*;
11
import visuAnalec.Message.*;
12
import visuAnalec.PanneauEditeur.*;
13
import visuAnalec.elements.*;
14
import visuAnalec.texte.*;
15
import visuAnalec.texte.PanneauAffTexte.*;
16
import visuAnalec.texte.PanneauTexte.*;
17
import visuAnalec.util.*;
18
import visuAnalec.util.GMessages.*;
19
import visuAnalec.util.GVisu.*;
20
import visuAnalec.vue.*;
21

    
22
/**
23
 *
24
 * @author Bernard
25
 */
26
public class PanneauCommandesUnites extends PanneauCommandes implements ActionListener {
27
  private PanneauChamps panneauChamps;
28
  public TypeComboBox saisieTypeUnites;
29
  private ElementComboBox saisieUnite;
30
  private JButton creeUnite;
31
  private JButton supprimeUnite;
32
  private JButton rectifieBorne;
33
  private int[] bornesSelectTexte;
34

    
35
  /*
36
   * CREATION PAR LE PANNEAU EDITEUR
37
   */
38
  PanneauCommandesUnites(Vue vue, PanneauAffTexte pTexte, PanneauChamps pChamps) {
39
    super(vue, pTexte);
40
    JToolBar barre1 = new JToolBar("Gestion des unités");
41
    barre1.setPreferredSize(new Dimension(0, 22));
42
//    barre1.setBackground(PanneauTexte.getCouleurFond1());
43
    barre1.setAlignmentX(0.0f);
44
    add(barre1);
45
    panneauChamps = pChamps;
46
    saisieTypeUnites = new TypeComboBox(Unite.class);
47
    saisieTypeUnites.addActionListener(this);
48
    saisieUnite = new ElementComboBox();
49
    saisieUnite.addActionListener(this);
50
    creeUnite = new JButton(new GAction("Créer") {
51
      public void executer() {
52
        creerUnite();
53
      }
54
    });
55
    supprimeUnite = new JButton(new GAction("Supprimer") {
56
      public void executer() {
57
        supprimerUnite();
58
      }
59
    });
60
    rectifieBorne = new JButton(new GAction("Rectifier une borne") {
61
      public void executer() {
62
        modifierBorne();
63
      }
64
    });
65
    barre1.addSeparator();
66
    barre1.add(new TitreBarre("Unité : ", PanneauTexte.getCouleurFond1()));
67
    barre1.addSeparator();
68
    barre1.add(saisieTypeUnites);
69
    barre1.add(saisieUnite);
70
    barre1.addSeparator();
71
    barre1.add(creeUnite);
72
    barre1.addSeparator();
73
    barre1.add(supprimeUnite);
74
    barre1.addSeparator();
75
    barre1.add(rectifieBorne);
76
  }
77

    
78
  /*
79
   * COMMANDES UTILISEES PAR LE PANNEAU EDITEUR
80
   */
81
  public void reinitialiser() {
82
    // typiquement, appelé par le panneau éditeur à la suite d'une modif de vue ou de structure
83
    saisieTypeUnites.removeActionListener(this);
84
    saisieTypeUnites.setModele(vue.getTypesUnitesAVoir());
85
    saisieTypeUnites.effSelection();
86
    saisieTypeUnites.addActionListener(this);
87
    supprimeUnite.setEnabled(false);
88
    rectifieBorne.setEnabled(false);
89
    initSaisieUnite();
90
    etatSelectRien();
91
    revalidate();
92
    repaint();
93
  }
94
  public void reafficher() {
95
    // potentiellement appelé par le panneau éditeur ?
96
    // appelé aussi par  traiterElementEvent
97
    if (saisieUnite.pasdeSelection()) {
98
      initSaisieUnite();
99
      etatSelectRien();
100
    } else {
101
      Unite uniteCourante = (Unite) saisieUnite.getSelection();
102
      initSaisieUnite(uniteCourante);
103
      etatSelectUnite(uniteCourante);
104
    }
105
  }
106
  public void elementSuivant(int sens) {
107
    if (sens>0) saisieUnite.gotoSuivant();
108
    else saisieUnite.gotoPrecedent();
109
  }
110
  public Element elementSelectionne() {
111
    if (saisieUnite.pasdeSelection()) return null;
112
    return saisieUnite.getSelection();
113
  }
114
  public void editerElement(Element elt) {
115
    // appelé par le panneauEditeur : elt est forcément une unité
116
    if (elt.getClass()!=Unite.class)
117
      throw new UnsupportedOperationException("Erreur : classe incorrecte");
118
    editerUnite((Unite) elt);
119
  }
120
  public ArrayList<ElementMarque> trouverElementsVises(Unite uniteVisee, TypeMarquage marqueUniteVisee,
121
          boolean avecId) {
122
    ArrayList<ElementMarque> eltsMarques = new ArrayList<ElementMarque>();
123
    eltsMarques.add(new ElementMarque(uniteVisee, marqueUniteVisee,
124
            avecId ? saisieUnite.getIdElement(uniteVisee) : null));
125
    return eltsMarques;
126
  }
127
  public void traiterElementEvent(ElementEvent evt) {
128
    // relayé par le panneau éditeur 
129
    switch (evt.getModif()) {
130
      case AJOUT_UNITE:
131
        Unite unite = (Unite) evt.getElement();
132
        editerUnite(unite);
133
        return;
134
      case SUP_UNITE:
135
        if (evt.getElement()==saisieUnite.getSelection()) {
136
          initSaisieUnite();
137
          etatSelectRien();
138
        } else {
139
          reafficher();
140
        }
141
        return;
142
      case BORNES_UNITE:
143
        return;  // traité directement par le panneau Texte : à revoir ?
144
      case AJOUT_RELATION:
145
      case AJOUT_SCHEMA:
146
      case SUP_RELATION:
147
      case MODIF_SCHEMA:
148
      case SUP_SCHEMA:
149
      case MODIF_VALEUR:
150
        reafficher();
151
        return;
152
      default:
153
        throw new UnsupportedOperationException("Cas "+evt.getModif()+" oublié dans un switch");
154
    }
155
  }
156
  void editerUnite(Unite unite) {
157
    // appelé  par traiterElementEvent, 
158
    // et aussi directement par le panneau éditeur quand il est sollicité par d'autres fenêtres
159
    if (!unite.getType().equals(saisieTypeUnites.getTypeSelection())) {
160
      saisieTypeUnites.removeActionListener(this);
161
      saisieTypeUnites.setSelection(unite.getType());
162
      saisieTypeUnites.addActionListener(this);
163
    }
164
    initSaisieUnite(unite);
165
    etatSelectUnite(unite);
166
  }
167
  /*
168
   * ACTIONS DE L'UTILISATEUR : CHANGEMENTS D'ETAT
169
   */
170
  public void actionPerformed(ActionEvent evt) {
171
    try {
172
      if (evt.getSource()==saisieTypeUnites) {
173
        initSaisieUnite();
174
        if (bornesSelectTexte==null) etatSelectRien();
175
        else {
176
          panneauTexte.getCaret().setSelectionVisible(true);
177
          etatSelectTexte();
178
        }
179
        return;
180
      }
181
      if (evt.getSource()==saisieUnite) {
182
        if (saisieUnite.pasdeSelection()) etatSelectRien();
183
        else etatSelectUnite((Unite) saisieUnite.getSelection());
184
        return;
185
      }
186
      throw new UnsupportedOperationException("Evénement non prévu : "+evt.paramString());
187
    } catch (Throwable ex) {
188
      GMessages.erreurFatale(ex);
189
    }
190
  }
191
  @Override
192
  public void traiterSourisEvent(SourisEvent evt) {
193
    switch (evt.getTypeEvent()) {
194
      case SELECT_RIEN:
195
        saisieUnite.effSelection();
196
        bornesSelectTexte = null;
197
        return;
198
      case SELECT_TEXTE:
199
        saisieUnite.removeActionListener(this);
200
        saisieUnite.effSelection();
201
        saisieUnite.addActionListener(this);
202
        bornesSelectTexte = evt.getBornesSelectionTexte();
203
        etatSelectTexte();
204
        return;
205
      case SELECT_ELEMENT:
206
        saisieUnite.setSelection(evt.getElementVise());
207
        bornesSelectTexte = null;
208
        return;
209
    }
210
    throw new UnsupportedOperationException("Evénement non prévu : "+evt.getTypeEvent());
211
  }
212
  /*
213
   * ACTIONS DE L'UTILISATEUR : BOUTONS
214
   */
215
  private void creerUnite() {
216
    if (vue.getCorpus().checkPresenceUnite(saisieTypeUnites.getTypeSelection(), bornesSelectTexte[0], bornesSelectTexte[1])
217
            &&!GMessages.confirmationAction("Dupliquer cette unité  ?")) return;
218
    vue.getCorpus().addUniteSaisie(saisieTypeUnites.getTypeSelection(), bornesSelectTexte[0], bornesSelectTexte[1]);
219
  }
220
  private void supprimerUnite() {
221
    if (!GMessages.confirmationAction("Supprimer l'unité sélectionnée ?"))
222
      return;
223
    vue.getCorpus().supUnite((Unite) saisieUnite.getSelection());
224
  }
225
  private void modifierBorne() {
226
    panneauTexte.rectifierBorneUnite((Unite) saisieUnite.getSelection());
227
  }
228
  /* 
229
   * GESTION INTERNE
230
   */
231
  private void etatSelectUnite(Unite unite) {  // une unité est sélectionnée
232
    panneauTexte.saisir(unite, new Unite[]{unite}, TypeMarquage.SELECT1);
233
    //           (Unite[]) saisieUnite.getElements(), TypeMarquage.FOND1);
234
    panneauChamps.afficher(unite);
235
    creeUnite.setEnabled(false);
236
    supprimeUnite.setEnabled(true);
237
    rectifieBorne.setEnabled(true);
238
  }
239
  private void etatSelectRien() {  // rien n'est sélectionné
240
    if (saisieTypeUnites.pasdeSelection()) panneauTexte.pasDeMarquage();
241
    else
242
      panneauTexte.saisir(null, (Unite[]) saisieUnite.getElements(), TypeMarquage.FOND1);
243
    panneauChamps.effacer();
244
    creeUnite.setEnabled(false);
245
    supprimeUnite.setEnabled(false);
246
    rectifieBorne.setEnabled(false);
247
  }
248
  private void etatSelectTexte() {    // du texte est sélectionné
249
    panneauTexte.pasDeMarquage();
250
//    if (saisieTypeUnites.pasdeSelection()) panneauTexte.pasDeMarquage();
251
//    else panneauTexte.saisir(null, (Unite[]) saisieUnite.getElements(), TypeMarquage.FOND1);
252
    panneauChamps.effacer();
253
    if (!saisieTypeUnites.pasdeSelection()) {
254
      creeUnite.setEnabled(true);
255
//      Boutons.setDefaut(creeUnite, true);
256
    }
257
    supprimeUnite.setEnabled(false);
258
    rectifieBorne.setEnabled(false);
259
  }
260
  private void initSaisieUnite(Unite unit) {
261
    saisieUnite.removeActionListener(this);
262
    if (saisieTypeUnites.pasdeSelection()) saisieUnite.setModeleVide();
263
    else {
264
      String type0 = saisieTypeUnites.getTypeSelection();
265
      Unite[] unites = vue.getUnitesAVoir(type0);
266
      saisieUnite.setModele(unites, vue.getIdUnites(type0, unites));
267
    }
268
    if (unit==null) saisieUnite.effSelection();
269
    else saisieUnite.setSelection(unit);
270
    saisieUnite.addActionListener(this);
271
    saisieUnite.revalidate();
272
  }
273
  private void initSaisieUnite() {
274
    initSaisieUnite(null);
275
  }
276
}