root / tmp / org.txm.analec.rcp / src / visuAnalec / PanneauCommandesUnites.java @ 3095
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 |
} |