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