Statistiques
| Révision :

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

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