Révision 916

tmp/org.txm.analec.rcp/src/visuAnalec/fichiers/FichiersJava.java (revision 916)
363 363
    }
364 364
  }
365 365

  
366
  public static boolean enregistrerVue(Vue vue, File fichier) {
367
	    ObjectOutputStream oos = null;
368
	    try {
369
	      oos = new ObjectOutputStream(new FileOutputStream(fichier));
370
	      vue.ecrireJava(oos);
371
	    } catch (IOException ex) {
372
	      JOptionPane.showMessageDialog(null, ex, "Erreur d'écriture de fichier", JOptionPane.ERROR_MESSAGE);
373
	      return false;
374
	    } finally {
375
	      try {
376
	        if (oos!=null) oos.close();
377
	        return true;
378
	      } catch (IOException ex) {
379
	        JOptionPane.showMessageDialog(null, ex, "Erreur de fermeture de fichier écrit", JOptionPane.ERROR_MESSAGE);
380
	        return false;
381
	      }
382
	    }
383
	  }
384
  
366 385
  public static boolean enregistrerVue(Vue vue) {
367 386
    File fichier;
368 387
    if ((fichier = Fichiers.choisirFichier(Commande.ENREGISTRER,
369 388
            "Nom du fichier vue", Fichiers.TypeFichier.VUE))==null) return false;
370
    ObjectOutputStream oos = null;
371
    try {
372
      oos = new ObjectOutputStream(new FileOutputStream(fichier));
373
      vue.ecrireJava(oos);
374
    } catch (IOException ex) {
375
      JOptionPane.showMessageDialog(null, ex, "Erreur d'écriture de fichier", JOptionPane.ERROR_MESSAGE);
376
      return false;
377
    } finally {
378
      try {
379
        if (oos!=null) oos.close();
380
        return true;
381
      } catch (IOException ex) {
382
        JOptionPane.showMessageDialog(null, ex, "Erreur de fermeture de fichier écrit", JOptionPane.ERROR_MESSAGE);
383
        return false;
384
      }
385
    }
389
    return enregistrerVue(vue, fichier);
386 390
  }
387 391
  /*permet d'ouvrir un procédure d'affichage du module des chaines de coréférence*/
388 392
    public static HashMap<String,Object> ouvrirChaineVue() {
......
445 449
            oos.close();
446 450
            return false;
447 451
        }
448
    
449

  
450 452
  }
451 453
  
452
  
453 454
}
tmp/org.txm.analec.rcp/src/visuAnalec/vue/VisuVue.java (revision 916)
23 23
 * @author Bernard
24 24
 */
25 25
public class VisuVue extends JFrame implements VueListener, ListSelectionListener, ChangeListener {
26
  static private VisuVue instance = null;
27
  private Vue vue;
28
  // Les données spécifiant la vue (échangées avec vue à l'initialisation et à la validation)
29
  private HashMap<Class<? extends Element>, HashMap<String, Boolean>> isTypesAVoir =
30
          new HashMap<Class<? extends Element>, HashMap<String, Boolean>>();
31
  private HashMap<Class<? extends Element>, HashMap<String, ArrayList<Adresse>>> adressesAVoir =
32
          new HashMap<Class<? extends Element>, HashMap<String, ArrayList<Adresse>>>();
33
  private HashMap<Class<? extends Element>, HashMap<String, ArrayList<String>>> champsAVoir =
34
          new HashMap<Class<? extends Element>, HashMap<String, ArrayList<String>>>();
35
  private HashMap<Class<? extends Element>, HashMap<String, HashMap<String, Integer>>> niveauxChampsAVoir =
36
          new HashMap<Class<? extends Element>, HashMap<String, HashMap<String, Integer>>>();
37
  private HashMap<Class<? extends Element>, HashMap<String, HashMap<String, Integer>>> positionsChampsAVoir =
38
          new HashMap<Class<? extends Element>, HashMap<String, HashMap<String, Integer>>>();
39
  private HashMap<Class<? extends Element>, HashMap<String, HashMap<String, Boolean>>> modifiabiliteChampsAVoir =
40
          new HashMap<Class<? extends Element>, HashMap<String, HashMap<String, Boolean>>>();
41
  private HashMap<Class<? extends Element>, HashMap<String, String>> champsId =
42
          new HashMap<Class<? extends Element>, HashMap<String, String>>();
43
  private HashMap<Class<? extends Element>, HashMap<String, SimpleAttributeSet>> stylesElements =
44
          new HashMap<Class<? extends Element>, HashMap<String, SimpleAttributeSet>>();
45
  private HashMap<Class<? extends Element>, HashMap<String, HashMap<String, HashMap<String, SimpleAttributeSet>>>> stylesValeursElements =
46
          new HashMap<Class<? extends Element>, HashMap<String, HashMap<String, HashMap<String, SimpleAttributeSet>>>>();  // le tableau des types à voir
47
  private JTable tableauTypes;
48
  private JTabbedPane panneauTabule;
49
  VisuVueExtraction visuVueExtraction;
50
  VisuVuePresentation visuVuePresentation;
51
  VisuVueColoriage visuVueColoriage;
26
	static private VisuVue instance = null;
27
	private Vue vue;
28
	// Les données spécifiant la vue (échangées avec vue à l'initialisation et à la validation)
29
	private HashMap<Class<? extends Element>, HashMap<String, Boolean>> isTypesAVoir =
30
			new HashMap<Class<? extends Element>, HashMap<String, Boolean>>();
31
	private HashMap<Class<? extends Element>, HashMap<String, ArrayList<Adresse>>> adressesAVoir =
32
			new HashMap<Class<? extends Element>, HashMap<String, ArrayList<Adresse>>>();
33
	private HashMap<Class<? extends Element>, HashMap<String, ArrayList<String>>> champsAVoir =
34
			new HashMap<Class<? extends Element>, HashMap<String, ArrayList<String>>>();
35
	private HashMap<Class<? extends Element>, HashMap<String, HashMap<String, Integer>>> niveauxChampsAVoir =
36
			new HashMap<Class<? extends Element>, HashMap<String, HashMap<String, Integer>>>();
37
	private HashMap<Class<? extends Element>, HashMap<String, HashMap<String, Integer>>> positionsChampsAVoir =
38
			new HashMap<Class<? extends Element>, HashMap<String, HashMap<String, Integer>>>();
39
	private HashMap<Class<? extends Element>, HashMap<String, HashMap<String, Boolean>>> modifiabiliteChampsAVoir =
40
			new HashMap<Class<? extends Element>, HashMap<String, HashMap<String, Boolean>>>();
41
	private HashMap<Class<? extends Element>, HashMap<String, String>> champsId =
42
			new HashMap<Class<? extends Element>, HashMap<String, String>>();
43
	private HashMap<Class<? extends Element>, HashMap<String, SimpleAttributeSet>> stylesElements =
44
			new HashMap<Class<? extends Element>, HashMap<String, SimpleAttributeSet>>();
45
	private HashMap<Class<? extends Element>, HashMap<String, HashMap<String, HashMap<String, SimpleAttributeSet>>>> stylesValeursElements =
46
			new HashMap<Class<? extends Element>, HashMap<String, HashMap<String, HashMap<String, SimpleAttributeSet>>>>();  // le tableau des types à voir
47
	private JTable tableauTypes;
48
	private JTabbedPane panneauTabule;
49
	VisuVueExtraction visuVueExtraction;
50
	VisuVuePresentation visuVuePresentation;
51
	VisuVueColoriage visuVueColoriage;
52 52

  
53
  static public VisuVue newVisuVue(Container fenetre, Vue vue) {
54
    if (instance!=null) instance.fermerFenetre();
55
    instance = new VisuVue(fenetre, vue);
56
    return instance;
57
  }
53
	static public VisuVue newVisuVue(Container fenetre, Vue vue) {
54
		if (instance!=null) instance.fermerFenetre();
55
		instance = new VisuVue(fenetre, vue);
56
		return instance;
57
	}
58 58

  
59
  @SuppressWarnings("unchecked")
60
  private VisuVue(Container fenetre, Vue vue) {
61
    super("Gestion de la vue");
62
    Point locFenetre = new Point(fenetre.getX()+20, fenetre.getY()+50);
63
    Dimension dimFenetre = new Dimension(fenetre.getWidth(), fenetre.getHeight()-30);
64
    setLocation(locFenetre);
65
    setSize(dimFenetre);
66
    this.vue = vue;
67
    vue.addEventListener(this);
68
    // initialisation des données spécifiant la vue
69
    for (Class<? extends Element> classe : new Class[]{Unite.class, Relation.class, Schema.class}) {
70
      isTypesAVoir.put(classe, new HashMap<String, Boolean>());
71
      for (String type : vue.getTypes(classe))
72
        isTypesAVoir.get(classe).put(type, false);
73
      for (String type : vue.getTypesAVoir(classe))
74
        isTypesAVoir.get(classe).put(type, true);
75
      champsAVoir.put(classe, new HashMap<String, ArrayList<String>>());
76
      adressesAVoir.put(classe, new HashMap<String, ArrayList<Adresse>>());
77
      positionsChampsAVoir.put(classe, new HashMap<String, HashMap<String, Integer>>());
78
      niveauxChampsAVoir.put(classe, new HashMap<String, HashMap<String, Integer>>());
79
      modifiabiliteChampsAVoir.put(classe, new HashMap<String, HashMap<String, Boolean>>());
80
      for (String type : vue.getTypes(classe)) {
81
        champsAVoir.get(classe).put(type, new ArrayList<String>());
82
        adressesAVoir.get(classe).put(type, new ArrayList<Adresse>());
83
        niveauxChampsAVoir.get(classe).put(type, new HashMap<String, Integer>());
84
        positionsChampsAVoir.get(classe).put(type, new HashMap<String, Integer>());
85
        modifiabiliteChampsAVoir.get(classe).put(type, new HashMap<String, Boolean>());
86
      }
87
      for (String type : vue.getTypesAVoir(classe)) {
88
        champsAVoir.get(classe).put(type, vue.getListeChamps(classe, type));
89
        for (String nom : vue.getNomsChamps(classe, type))
90
          adressesAVoir.get(classe).get(type).add(vue.getAdresseChamps(classe, type, nom));
91
      }
92
      champsId.put(classe, new HashMap<String, String>());
93
      for (String type : vue.getTypesAVoir(classe))
94
        if (vue.getChampId(classe, type)!=null)
95
          champsId.get(classe).put(type, vue.getChampId(classe, type));
96
      for (String type : vue.getTypesAVoir(classe)) {
97
        positionsChampsAVoir.get(classe).put(type, vue.getPositionsChampsAVoir(classe, type));
98
        niveauxChampsAVoir.get(classe).put(type, vue.getNiveauxChampsAVoir(classe, type));
99
        modifiabiliteChampsAVoir.get(classe).put(type, new HashMap<String, Boolean>());
100
        for (String champ : vue.getNomsChamps(classe, type))
101
          modifiabiliteChampsAVoir.get(classe).get(type).put(champ, vue.isChampModifiable(classe, type, champ));
102
      }
103
      stylesElements.put(classe, new HashMap<String, SimpleAttributeSet>());
104
      for (String type : vue.getTypesAVoir(classe))
105
        if (vue.getStyleElements(classe, type)!=null)
106
          stylesElements.get(classe).put(type, vue.getStyleElements(classe, type));
107
      stylesValeursElements.put(classe, new HashMap<String, HashMap<String, HashMap<String, SimpleAttributeSet>>>());
108
      for (String type : vue.getTypesAVoir(classe))
109
        if (vue.getStyleValeursElements(classe, type)!=null)
110
          stylesValeursElements.get(classe).put(type, vue.getStyleValeursElements(classe, type));
111
    }
112
    // Tableau des types d'éléments à visualiser
113
    Box panneauTypes = Box.createVerticalBox();
59
	@SuppressWarnings("unchecked")
60
	private VisuVue(Container fenetre, Vue vue) {
61
		super("Gestion de la vue");
62
		if (fenetre != null) {
63
			Point locFenetre = new Point(fenetre.getX()+20, fenetre.getY()+50);
64
			Dimension dimFenetre = new Dimension(fenetre.getWidth(), fenetre.getHeight()-30);
65
			setLocation(locFenetre);
66
			setSize(dimFenetre);
67
		}
68
		this.vue = vue;
69
		vue.addEventListener(this);
70
		// initialisation des données spécifiant la vue
71
		for (Class<? extends Element> classe : new Class[]{Unite.class, Relation.class, Schema.class}) {
72
			isTypesAVoir.put(classe, new HashMap<String, Boolean>());
73
			for (String type : vue.getTypes(classe))
74
				isTypesAVoir.get(classe).put(type, false);
75
			for (String type : vue.getTypesAVoir(classe))
76
				isTypesAVoir.get(classe).put(type, true);
77
			champsAVoir.put(classe, new HashMap<String, ArrayList<String>>());
78
			adressesAVoir.put(classe, new HashMap<String, ArrayList<Adresse>>());
79
			positionsChampsAVoir.put(classe, new HashMap<String, HashMap<String, Integer>>());
80
			niveauxChampsAVoir.put(classe, new HashMap<String, HashMap<String, Integer>>());
81
			modifiabiliteChampsAVoir.put(classe, new HashMap<String, HashMap<String, Boolean>>());
82
			for (String type : vue.getTypes(classe)) {
83
				champsAVoir.get(classe).put(type, new ArrayList<String>());
84
				adressesAVoir.get(classe).put(type, new ArrayList<Adresse>());
85
				niveauxChampsAVoir.get(classe).put(type, new HashMap<String, Integer>());
86
				positionsChampsAVoir.get(classe).put(type, new HashMap<String, Integer>());
87
				modifiabiliteChampsAVoir.get(classe).put(type, new HashMap<String, Boolean>());
88
			}
89
			for (String type : vue.getTypesAVoir(classe)) {
90
				champsAVoir.get(classe).put(type, vue.getListeChamps(classe, type));
91
				for (String nom : vue.getNomsChamps(classe, type))
92
					adressesAVoir.get(classe).get(type).add(vue.getAdresseChamps(classe, type, nom));
93
			}
94
			champsId.put(classe, new HashMap<String, String>());
95
			for (String type : vue.getTypesAVoir(classe))
96
				if (vue.getChampId(classe, type)!=null)
97
					champsId.get(classe).put(type, vue.getChampId(classe, type));
98
			for (String type : vue.getTypesAVoir(classe)) {
99
				positionsChampsAVoir.get(classe).put(type, vue.getPositionsChampsAVoir(classe, type));
100
				niveauxChampsAVoir.get(classe).put(type, vue.getNiveauxChampsAVoir(classe, type));
101
				modifiabiliteChampsAVoir.get(classe).put(type, new HashMap<String, Boolean>());
102
				for (String champ : vue.getNomsChamps(classe, type))
103
					modifiabiliteChampsAVoir.get(classe).get(type).put(champ, vue.isChampModifiable(classe, type, champ));
104
			}
105
			stylesElements.put(classe, new HashMap<String, SimpleAttributeSet>());
106
			for (String type : vue.getTypesAVoir(classe))
107
				if (vue.getStyleElements(classe, type)!=null)
108
					stylesElements.get(classe).put(type, vue.getStyleElements(classe, type));
109
			stylesValeursElements.put(classe, new HashMap<String, HashMap<String, HashMap<String, SimpleAttributeSet>>>());
110
			for (String type : vue.getTypesAVoir(classe))
111
				if (vue.getStyleValeursElements(classe, type)!=null)
112
					stylesValeursElements.get(classe).put(type, vue.getStyleValeursElements(classe, type));
113
		}
114
		// Tableau des types d'éléments à visualiser
115
		Box panneauTypes = Box.createVerticalBox();
114 116

  
115
    panneauTypes.add(Box.createVerticalGlue());
116
    ModeleTableauTypes donneesTypes = new ModeleTableauTypes();
117
    tableauTypes = new JTable(donneesTypes) {
118
      @Override
119
      public boolean isCellSelected(int row, int col) {
120
        if (col==1) {
121
          return false;
122
        }
123
        String classeType = ((ModeleTableauTypes) getModel()).classesTypes[row];
124
        return isRowSelected(row)&&isTypesAVoir.get(GVisu.getClasse(classeType)).get(GVisu.getType(classeType));
125
      }
126
    };
117
		panneauTypes.add(Box.createVerticalGlue());
118
		ModeleTableauTypes donneesTypes = new ModeleTableauTypes();
119
		tableauTypes = new JTable(donneesTypes) {
120
			@Override
121
			public boolean isCellSelected(int row, int col) {
122
				if (col==1) {
123
					return false;
124
				}
125
				String classeType = ((ModeleTableauTypes) getModel()).classesTypes[row];
126
				return isRowSelected(row)&&isTypesAVoir.get(GVisu.getClasse(classeType)).get(GVisu.getType(classeType));
127
			}
128
		};
127 129

  
128
    tableauTypes.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
130
		tableauTypes.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
129 131

  
130
    tableauTypes.getSelectionModel().addListSelectionListener(this);
132
		tableauTypes.getSelectionModel().addListSelectionListener(this);
131 133

  
132
    JScrollPane scroll1 = new JScrollPane(tableauTypes);
134
		JScrollPane scroll1 = new JScrollPane(tableauTypes);
133 135

  
134
    scroll1.setBorder(
135
            new TitledBorder("Types d'éléments à visualiser"));
136
    panneauTypes.add(scroll1);
137
    // les boutons de validation
136
		scroll1.setBorder(
137
				new TitledBorder("Types d'éléments à visualiser"));
138
		panneauTypes.add(scroll1);
139
		// les boutons de validation
138 140

  
139
    panneauTypes.add(Box.createVerticalGlue());
140
    JPanel pCommandesValidation = new JPanel(new FlowLayout());
141
    JButton valideModifs = new JButton(
142
            new GAction("Valider") {
143
              public void executer() {
144
                validerModifVue();
145
              }
146
            ;
147
    });
141
		panneauTypes.add(Box.createVerticalGlue());
142
		JPanel pCommandesValidation = new JPanel(new FlowLayout());
143
		JButton valideModifs = new JButton(
144
				new GAction("Valider") {
145
					public void executer() {
146
						validerModifVue();
147
					}
148
					;
149
				});
148 150

  
149
    JButton annuleModifs = new JButton(
150
            new GAction("Annuler") {
151
              public void executer() {
152
                annulerModifVue();
153
              }
154
            ;
151
		JButton annuleModifs = new JButton(
152
				new GAction("Annuler") {
153
					public void executer() {
154
						annulerModifVue();
155
					}
156
					;
155 157

  
156
    });
157
    pCommandesValidation.add(valideModifs, CENTER_ALIGNMENT);
158
				});
159
		pCommandesValidation.add(valideModifs, CENTER_ALIGNMENT);
158 160

  
159
    pCommandesValidation.add(annuleModifs, CENTER_ALIGNMENT);
161
		pCommandesValidation.add(annuleModifs, CENTER_ALIGNMENT);
160 162

  
161
    panneauTypes.add(pCommandesValidation);
162
    // Les panneaux tabulés Extraction, Sélection, Présentation, Coloriage
163
    panneauTabule = new JTabbedPane();
163
		panneauTypes.add(pCommandesValidation);
164
		// Les panneaux tabulés Extraction, Sélection, Présentation, Coloriage
165
		panneauTabule = new JTabbedPane();
164 166

  
165
    panneauTabule.addChangeListener(
166
            this);
167
    visuVueExtraction = new VisuVueExtraction(this, vue, champsAVoir, adressesAVoir);
167
		panneauTabule.addChangeListener(
168
				this);
169
		visuVueExtraction = new VisuVueExtraction(this, vue, champsAVoir, adressesAVoir);
168 170

  
169
    panneauTabule.add(
170
            "Extraction de propriétés", visuVueExtraction);
171
    visuVuePresentation = new VisuVuePresentation(this, vue, champsAVoir, champsId,
172
            modifiabiliteChampsAVoir, niveauxChampsAVoir, positionsChampsAVoir);
171
		panneauTabule.add(
172
				"Extraction de propriétés", visuVueExtraction);
173
		visuVuePresentation = new VisuVuePresentation(this, vue, champsAVoir, champsId,
174
				modifiabiliteChampsAVoir, niveauxChampsAVoir, positionsChampsAVoir);
173 175

  
174
    panneauTabule.add(
175
            "Présentation des champs", visuVuePresentation);
176
    visuVueColoriage = new VisuVueColoriage(this, vue, champsAVoir, adressesAVoir,
177
            stylesElements, stylesValeursElements);
176
		panneauTabule.add(
177
				"Présentation des champs", visuVuePresentation);
178
		visuVueColoriage = new VisuVueColoriage(this, vue, champsAVoir, adressesAVoir,
179
				stylesElements, stylesValeursElements);
178 180

  
179
    panneauTabule.add(
180
            "Coloriage d'éléments", visuVueColoriage);
181
    // cadre global de la fenêtre
182
    JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panneauTypes, panneauTabule);
181
		panneauTabule.add(
182
				"Coloriage d'éléments", visuVueColoriage);
183
		// cadre global de la fenêtre
184
		JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panneauTypes, panneauTabule);
183 185

  
184
    setContentPane(split);
186
		setContentPane(split);
185 187

  
186
    setVisible(
187
            true);
188
    split.setDividerLocation(
189
            0.25);
190
//    visuVueExtraction.agencerPanneaux();
191
//
192
    // initialisation de la sélection d'un premier type à voir (si possible)
188
		setVisible(
189
				true);
190
		split.setDividerLocation(
191
				0.25);
192
		//    visuVueExtraction.agencerPanneaux();
193
		//
194
		// initialisation de la sélection d'un premier type à voir (si possible)
193 195

  
194 196

  
195
    for (int i = 0;
196
            i<donneesTypes.getRowCount();
197
            i++) {
198
      if ((Boolean) donneesTypes.getValueAt(i, 1)) {
199
        tableauTypes.setRowSelectionInterval(i, i);
200
        tableauTypes.setColumnSelectionInterval(0, 0);
201
        break;
202
      }
203
    }
204
    // Fermeture de la fenêtre
197
		for (int i = 0;
198
				i<donneesTypes.getRowCount();
199
				i++) {
200
			if ((Boolean) donneesTypes.getValueAt(i, 1)) {
201
				tableauTypes.setRowSelectionInterval(i, i);
202
				tableauTypes.setColumnSelectionInterval(0, 0);
203
				break;
204
			}
205
		}
206
		// Fermeture de la fenêtre
205 207

  
206
    setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
208
		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
207 209

  
208
    addWindowListener(
209
            new WindowAdapter() {
210
              @Override
211
              public void windowClosing(WindowEvent evt) {
212
                confirmerFermerFenetre();
213
              }
214
            });
215
  }
210
		addWindowListener(
211
				new WindowAdapter() {
212
					@Override
213
					public void windowClosing(WindowEvent evt) {
214
						confirmerFermerFenetre();
215
					}
216
				});
217
	}
216 218

  
217
  public void stateChanged(ChangeEvent evt) {
218
    if (((JTabbedPane) evt.getSource())!=panneauTabule) return;
219
    try {
220
      switch (panneauTabule.getSelectedIndex()) {
221
        case 0:
222
          return;
223
        case 1:
224
          visuVuePresentation.reinitialiser();
225
          return;
226
        case 2:
227
          visuVueColoriage.reinitialiser();
228
          return;
229
        default:
230
          throw new IndexOutOfBoundsException();
231
      }
232
    } catch (Throwable ex) {
233
      GMessages.erreurFatale(ex);
234
    }
235
  }
219
	public void stateChanged(ChangeEvent evt) {
220
		if (((JTabbedPane) evt.getSource())!=panneauTabule) return;
221
		try {
222
			switch (panneauTabule.getSelectedIndex()) {
223
			case 0:
224
				return;
225
			case 1:
226
				visuVuePresentation.reinitialiser();
227
				return;
228
			case 2:
229
				visuVueColoriage.reinitialiser();
230
				return;
231
			default:
232
				throw new IndexOutOfBoundsException();
233
			}
234
		} catch (Throwable ex) {
235
			GMessages.erreurFatale(ex);
236
		}
237
	}
236 238

  
237
  private void validerModifVue() {
238
    vue.modifierVueParSaisie(isTypesAVoir, adressesAVoir, champsAVoir, champsId, modifiabiliteChampsAVoir,
239
            positionsChampsAVoir, niveauxChampsAVoir, stylesElements, stylesValeursElements);
240
  }
239
	private void validerModifVue() {
240
		vue.modifierVueParSaisie(isTypesAVoir, adressesAVoir, champsAVoir, champsId, modifiabiliteChampsAVoir,
241
				positionsChampsAVoir, niveauxChampsAVoir, stylesElements, stylesValeursElements);
242
	}
241 243

  
242
  private void annulerModifVue() {
243
    fermerFenetre();
244
  }
244
	private void annulerModifVue() {
245
		fermerFenetre();
246
	}
245 247

  
246
  void ajouterChamp(Class<? extends Element> classe, String type, Adresse ad) {
247
    String champ = Vue.trouveNomChampParDefaut(ad, champsAVoir.get(classe).get(type));
248
    champsAVoir.get(classe).get(type).add(champ);
249
    adressesAVoir.get(classe).get(type).add(ad);
250
    modifiabiliteChampsAVoir.get(classe).get(type).put(champ, ad.getLongueur()==1);
251
    positionsChampsAVoir.get(classe).get(type).put(champ, 0);
252
    niveauxChampsAVoir.get(classe).get(type).put(champ, 0);
253
  }
248
	void ajouterChamp(Class<? extends Element> classe, String type, Adresse ad) {
249
		String champ = Vue.trouveNomChampParDefaut(ad, champsAVoir.get(classe).get(type));
250
		champsAVoir.get(classe).get(type).add(champ);
251
		adressesAVoir.get(classe).get(type).add(ad);
252
		modifiabiliteChampsAVoir.get(classe).get(type).put(champ, ad.getLongueur()==1);
253
		positionsChampsAVoir.get(classe).get(type).put(champ, 0);
254
		niveauxChampsAVoir.get(classe).get(type).put(champ, 0);
255
	}
254 256

  
255
  void renommerChamp(Class<? extends Element> classe, String type, int rg, String newNom) {
256
    String oldNom = champsAVoir.get(classe).get(type).get(rg);
257
    champsAVoir.get(classe).get(type).set(rg, newNom);
258
    if (champsId.get(classe).containsKey(type)&&oldNom.equals(champsId.get(classe).get(type))) {
259
      champsId.get(classe).put(type, newNom);
260
    }
261
    modifiabiliteChampsAVoir.get(classe).get(type).put(newNom,
262
            modifiabiliteChampsAVoir.get(classe).get(type).get(oldNom));
263
    modifiabiliteChampsAVoir.get(classe).get(type).remove(oldNom);
264
    positionsChampsAVoir.get(classe).get(type).put(newNom,
265
            positionsChampsAVoir.get(classe).get(type).get(oldNom));
266
    positionsChampsAVoir.get(classe).get(type).remove(oldNom);
267
    niveauxChampsAVoir.get(classe).get(type).put(newNom,
268
            niveauxChampsAVoir.get(classe).get(type).get(oldNom));
269
    niveauxChampsAVoir.get(classe).get(type).remove(oldNom);
270
    if (stylesValeursElements.get(classe).containsKey(type)
271
            &&stylesValeursElements.get(classe).get(type).containsKey(oldNom)) {
272
      stylesValeursElements.get(classe).get(type).
273
              put(newNom, stylesValeursElements.get(classe).get(type).get(oldNom));
274
      stylesValeursElements.get(classe).get(type).remove(oldNom);
275
    }
276
  }
257
	void renommerChamp(Class<? extends Element> classe, String type, int rg, String newNom) {
258
		String oldNom = champsAVoir.get(classe).get(type).get(rg);
259
		champsAVoir.get(classe).get(type).set(rg, newNom);
260
		if (champsId.get(classe).containsKey(type)&&oldNom.equals(champsId.get(classe).get(type))) {
261
			champsId.get(classe).put(type, newNom);
262
		}
263
		modifiabiliteChampsAVoir.get(classe).get(type).put(newNom,
264
				modifiabiliteChampsAVoir.get(classe).get(type).get(oldNom));
265
		modifiabiliteChampsAVoir.get(classe).get(type).remove(oldNom);
266
		positionsChampsAVoir.get(classe).get(type).put(newNom,
267
				positionsChampsAVoir.get(classe).get(type).get(oldNom));
268
		positionsChampsAVoir.get(classe).get(type).remove(oldNom);
269
		niveauxChampsAVoir.get(classe).get(type).put(newNom,
270
				niveauxChampsAVoir.get(classe).get(type).get(oldNom));
271
		niveauxChampsAVoir.get(classe).get(type).remove(oldNom);
272
		if (stylesValeursElements.get(classe).containsKey(type)
273
				&&stylesValeursElements.get(classe).get(type).containsKey(oldNom)) {
274
			stylesValeursElements.get(classe).get(type).
275
			put(newNom, stylesValeursElements.get(classe).get(type).get(oldNom));
276
			stylesValeursElements.get(classe).get(type).remove(oldNom);
277
		}
278
	}
277 279

  
278
  void supprimerChamp(Class<? extends Element> classe, String type, int rg) {
279
    String oldNom = champsAVoir.get(classe).get(type).get(rg);
280
    champsAVoir.get(classe).get(type).remove(rg);
281
    adressesAVoir.get(classe).get(type).remove(rg);
282
    if (champsId.get(classe).containsKey(type)&&oldNom.equals(champsId.get(classe).get(type))) {
283
      champsId.get(classe).remove(type);
284
      modifiabiliteChampsAVoir.get(classe).get(type).remove(oldNom);
285
      positionsChampsAVoir.get(classe).get(type).remove(oldNom);
286
      niveauxChampsAVoir.get(classe).get(type).remove(oldNom);
287
      if (stylesValeursElements.get(classe).containsKey(type)
288
              &&stylesValeursElements.get(classe).get(type).containsKey(oldNom)) {
289
        stylesValeursElements.get(classe).get(type).remove(oldNom);
290
      }
291
    }
292
  }
293
  String getPropChamp(Class<? extends Element> classe, String type, String champ) {
294
    ArrayList<String> champs = champsAVoir.get(classe).get(type);
295
    if(champs==null) return "";
296
    int ind = champs.indexOf(champ);
297
    if(ind<0) return "";
298
     String prop = adressesAVoir.get(classe).get(type).get(ind).prop;
299
     if(prop==null) return "";
300
     return prop;
301
   
302
  }
280
	void supprimerChamp(Class<? extends Element> classe, String type, int rg) {
281
		String oldNom = champsAVoir.get(classe).get(type).get(rg);
282
		champsAVoir.get(classe).get(type).remove(rg);
283
		adressesAVoir.get(classe).get(type).remove(rg);
284
		if (champsId.get(classe).containsKey(type)&&oldNom.equals(champsId.get(classe).get(type))) {
285
			champsId.get(classe).remove(type);
286
			modifiabiliteChampsAVoir.get(classe).get(type).remove(oldNom);
287
			positionsChampsAVoir.get(classe).get(type).remove(oldNom);
288
			niveauxChampsAVoir.get(classe).get(type).remove(oldNom);
289
			if (stylesValeursElements.get(classe).containsKey(type)
290
					&&stylesValeursElements.get(classe).get(type).containsKey(oldNom)) {
291
				stylesValeursElements.get(classe).get(type).remove(oldNom);
292
			}
293
		}
294
	}
295
	String getPropChamp(Class<? extends Element> classe, String type, String champ) {
296
		ArrayList<String> champs = champsAVoir.get(classe).get(type);
297
		if(champs==null) return "";
298
		int ind = champs.indexOf(champ);
299
		if(ind<0) return "";
300
		String prop = adressesAVoir.get(classe).get(type).get(ind).prop;
301
		if(prop==null) return "";
302
		return prop;
303 303

  
304
  public void valueChanged(ListSelectionEvent evt) {
305
    if ((ListSelectionModel) evt.getSource()!=tableauTypes.getSelectionModel())
306
      return;
307
    try {
308
      if (evt.getValueIsAdjusting()) {
309
        return;
310
      }
311
      int row = ((ListSelectionModel) evt.getSource()).getMinSelectionIndex();
312
      if (row<0) {
313
        visuVueExtraction.setTypeSelected(null, null);
314
        visuVuePresentation.setTypeSelected(null, null);
315
        visuVueColoriage.setTypeSelected(null, null);
316
      } else {
317
        String classeType = ((ModeleTableauTypes) tableauTypes.getModel()).classesTypes[row];
318
        Class<? extends Element> classeSelected = GVisu.getClasse(classeType);
319
        String typeSelected = GVisu.getType(classeType);
320
        if (isTypesAVoir.get(classeSelected).get(typeSelected)) {
321
          visuVueExtraction.setTypeSelected(classeSelected, typeSelected);
322
          visuVuePresentation.setTypeSelected(classeSelected, typeSelected);
323
          visuVueColoriage.setTypeSelected(classeSelected, typeSelected);
324
        } else {
325
          visuVueExtraction.setTypeSelected(null, null);
326
          visuVuePresentation.setTypeSelected(null, null);
327
          visuVueColoriage.setTypeSelected(null, null);
328
        }
329
      }
330
    } catch (Throwable ex) {
331
      GMessages.erreurFatale(ex);
332
    }
333
  }
304
	}
334 305

  
335
  public void traiterEvent(Message evt) {
336
    switch (evt.getType()) {
337
      case CLEAR_CORPUS:
338
        fermerFenetre();
339
        return;
340
      case CORPUS_SAVED:
341
          fermerFenetre();
342
          return;
343
      case NEW_CORPUS:  // impossible en principe : CLEAR_CORPUS a détruit la fenêtre
344
        throw new UnsupportedOperationException("Fenêtre vue présente lors d'un message NEW_CORPUS ???");
345
      case MODIF_TEXTE:
346
        return;
347
      case MODIF_VUE:
348
        fermerFenetre();  // ferme même si la modif vient d'ici
349
        return;
350
      case MODIF_STRUCTURE:
351
        fermerFenetre();
352
        return;
353
      case MODIF_ELEMENT:
354
        return;
355
      default:
356
        throw new UnsupportedOperationException("Cas "+evt.getType()+" oublié dans un switch");
357
    }
358
  }
306
	public void valueChanged(ListSelectionEvent evt) {
307
		if ((ListSelectionModel) evt.getSource()!=tableauTypes.getSelectionModel())
308
			return;
309
		try {
310
			if (evt.getValueIsAdjusting()) {
311
				return;
312
			}
313
			int row = ((ListSelectionModel) evt.getSource()).getMinSelectionIndex();
314
			if (row<0) {
315
				visuVueExtraction.setTypeSelected(null, null);
316
				visuVuePresentation.setTypeSelected(null, null);
317
				visuVueColoriage.setTypeSelected(null, null);
318
			} else {
319
				String classeType = ((ModeleTableauTypes) tableauTypes.getModel()).classesTypes[row];
320
				Class<? extends Element> classeSelected = GVisu.getClasse(classeType);
321
				String typeSelected = GVisu.getType(classeType);
322
				if (isTypesAVoir.get(classeSelected).get(typeSelected)) {
323
					visuVueExtraction.setTypeSelected(classeSelected, typeSelected);
324
					visuVuePresentation.setTypeSelected(classeSelected, typeSelected);
325
					visuVueColoriage.setTypeSelected(classeSelected, typeSelected);
326
				} else {
327
					visuVueExtraction.setTypeSelected(null, null);
328
					visuVuePresentation.setTypeSelected(null, null);
329
					visuVueColoriage.setTypeSelected(null, null);
330
				}
331
			}
332
		} catch (Throwable ex) {
333
			GMessages.erreurFatale(ex);
334
		}
335
	}
359 336

  
360
  private void confirmerFermerFenetre() {
361
    try {
362
      int rep = JOptionPane.showOptionDialog(this, "Valider les modifications ?",
363
              "Fermeture de la fenêtre \"Structure des annotations\"", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE,
364
              null, new Object[]{"Oui", "Non", "Annuler"}, "Non");
365
      if (rep==2) {
366
        return;
367
      }
368
      if (rep==0) {
369
        validerModifVue();
370
      }
371
      annulerModifVue();
372
    } catch (Throwable ex) {
373
      GMessages.erreurFatale(ex);
374
    }
375
  }
337
	public void traiterEvent(Message evt) {
338
		switch (evt.getType()) {
339
		case CLEAR_CORPUS:
340
			fermerFenetre();
341
			return;
342
		case CORPUS_SAVED:
343
			fermerFenetre();
344
			return;
345
		case NEW_CORPUS:  // impossible en principe : CLEAR_CORPUS a détruit la fenêtre
346
			throw new UnsupportedOperationException("Fenêtre vue présente lors d'un message NEW_CORPUS ???");
347
		case MODIF_TEXTE:
348
			return;
349
		case MODIF_VUE:
350
			fermerFenetre();  // ferme même si la modif vient d'ici
351
			return;
352
		case MODIF_STRUCTURE:
353
			fermerFenetre();
354
			return;
355
		case MODIF_ELEMENT:
356
			return;
357
		default:
358
			throw new UnsupportedOperationException("Cas "+evt.getType()+" oublié dans un switch");
359
		}
360
	}
376 361

  
377
  private void fermerFenetre() {
378
    vue.removeEventListener(this);
379
    dispose();
362
	private void confirmerFermerFenetre() {
363
		try {
364
			int rep = JOptionPane.showOptionDialog(this, "Valider les modifications ?",
365
					"Fermeture de la fenêtre \"Structure des annotations\"", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE,
366
					null, new Object[]{"Oui", "Non", "Annuler"}, "Non");
367
			if (rep==2) {
368
				return;
369
			}
370
			if (rep==0) {
371
				validerModifVue();
372
			}
373
			annulerModifVue();
374
		} catch (Throwable ex) {
375
			GMessages.erreurFatale(ex);
376
		}
377
	}
380 378

  
379
	private void fermerFenetre() {
380
		vue.removeEventListener(this);
381
		dispose();
381 382

  
382
  }
383 383

  
384
  private class ModeleTableauTypes extends AbstractTableModel {
385
    String[] classesTypes;
384
	}
386 385

  
387
    private ModeleTableauTypes() {
388
      super();
389
      classesTypes = GVisu.getClassesTypes(vue.getTypes(Unite.class), vue.getTypes(Relation.class), vue.getTypes(Schema.class));
390
    }
386
	private class ModeleTableauTypes extends AbstractTableModel {
387
		String[] classesTypes;
391 388

  
392
    public int getColumnCount() {
393
      return 2;
394
    }
389
		private ModeleTableauTypes() {
390
			super();
391
			classesTypes = GVisu.getClassesTypes(vue.getTypes(Unite.class), vue.getTypes(Relation.class), vue.getTypes(Schema.class));
392
		}
395 393

  
396
    public int getRowCount() {
397
      return classesTypes.length;
398
    }
394
		public int getColumnCount() {
395
			return 2;
396
		}
399 397

  
400
    public Object getValueAt(int row, int col) {
401
      String classeType = classesTypes[row];
402
      return col==0 ? classeType : isTypesAVoir.get(GVisu.getClasse(classeType)).get(GVisu.getType(classeType));
403
    }
398
		public int getRowCount() {
399
			return classesTypes.length;
400
		}
404 401

  
405
    @Override
406
    public String getColumnName(int col) {
407
      return col==0 ? "Types d'éléments" : "à voir";
408
    }
402
		public Object getValueAt(int row, int col) {
403
			String classeType = classesTypes[row];
404
			return col==0 ? classeType : isTypesAVoir.get(GVisu.getClasse(classeType)).get(GVisu.getType(classeType));
405
		}
409 406

  
410
    @Override
411
    public Class getColumnClass(int col) {
412
      return col==0 ? String.class : Boolean.class;
413
    }
407
		@Override
408
		public String getColumnName(int col) {
409
			return col==0 ? "Types d'éléments" : "à voir";
410
		}
414 411

  
415
    @Override
416
    public boolean isCellEditable(int row, int col) {
417
      return col==1;
418
    }
412
		@Override
413
		public Class getColumnClass(int col) {
414
			return col==0 ? String.class : Boolean.class;
415
		}
419 416

  
420
    @Override
421
    public void setValueAt(Object aValue, int row, int col) {
422
      if (col==1) {
423
        String classeType = classesTypes[row];
424
        isTypesAVoir.get(GVisu.getClasse(classeType)).put(GVisu.getType(classeType), (Boolean) aValue);
425
        tableauTypes.clearSelection();  // important : à faire même quand aValue est vrai
426
        // pour que l'événement "ListSelection change" soit émis dans tous les cas
427
        if ((Boolean) aValue) {
428
          tableauTypes.setRowSelectionInterval(row, row);
429
          tableauTypes.setColumnSelectionInterval(0, 0);
430
        }
431
      }
432
    }
433
  }
417
		@Override
418
		public boolean isCellEditable(int row, int col) {
419
			return col==1;
420
		}
421

  
422
		@Override
423
		public void setValueAt(Object aValue, int row, int col) {
424
			if (col==1) {
425
				String classeType = classesTypes[row];
426
				isTypesAVoir.get(GVisu.getClasse(classeType)).put(GVisu.getType(classeType), (Boolean) aValue);
427
				tableauTypes.clearSelection();  // important : à faire même quand aValue est vrai
428
				// pour que l'événement "ListSelection change" soit émis dans tous les cas
429
				if ((Boolean) aValue) {
430
					tableauTypes.setRowSelectionInterval(row, row);
431
					tableauTypes.setColumnSelectionInterval(0, 0);
432
				}
433
			}
434
		}
435
	}
434 436
}
tmp/org.txm.analec.rcp/src/org/txm/analec/AnalecCorpora.java (revision 916)
28 28
	 */
29 29
	public static Corpus getCorpus(String name) {
30 30
		File fichierCorpus = new File(Toolbox.getTxmHomePath(), "corpora/"+name+"/analec/"+name+".ec"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
31
		//File fichierVue = new File(Toolbox.getTXMHOMEPATH(), "corpora/"+name+"/analec/"+name+".ecv");
31
		File fichierVue = new File(Toolbox.getTxmHomePath(), "corpora/"+name+"/analec/"+name+".ecv");
32 32
		Corpus corpus = null;
33 33
		if (AnalecCorpora.corpora.containsKey(name)) {
34 34
			corpus = AnalecCorpora.corpora.get(name);
......
54 54
			Vue vue = getVue(name);
55 55
			
56 56
//TODO: does not work :( 
57
//			if (fichierVue.exists()) {
58
//				if (!FichiersJava.ouvrirVue(vue, fichierVue)) {
59
//					System.out.println("Warning: Fail to open corpus Vue file: "+fichierVue);
60
//					//return null;
61
//				}
62
//			} else {
63
//				if (!FichiersJava.enregistrerVue(vue, fichierVue)) {
64
//					System.out.println("Warning: Fail to create corpus Vue file: "+fichierVue);
65
//					//return null;
66
//				}
67
//			}
57
			if (fichierVue.exists()) {
58
				if (!FichiersJava.ouvrirVue(vue, fichierVue)) {
59
					System.out.println("Warning: Fail to open corpus Vue file: "+fichierVue);
60
					//return null;
61
				}
62
			} else {
63
				if (!FichiersJava.enregistrerVue(vue, fichierVue)) {
64
					System.out.println("Warning: Fail to create corpus Vue file: "+fichierVue);
65
					//return null;
66
				}
67
			}
68 68
		}
69 69
		return corpus;
70 70
	}
......
98 98
			}
99 99
			Corpus corpus = getCorpus(name);
100 100
			Vue vue = new Vue(corpus);
101
			vue.retablirVueParDefaut();
102 101
			vues.put(name, vue);
103 102
		}
104 103
		return vues.get(name);
......
106 105

  
107 106
	public static boolean saveCorpus(String name) {
108 107
		Corpus corpus = getCorpus(name);
109

  
108
		Vue vue = getVue(name);
110 109
		File dir = new File(Toolbox.getTxmHomePath(), "corpora/"+name+"/analec/"); //$NON-NLS-1$ //$NON-NLS-2$
111 110
		dir.mkdir();
112 111
		File fichierCorpus = new File(dir,name+".ec"); //$NON-NLS-1$
113
		return FichiersJava.enregistrerCorpus(corpus, fichierCorpus);
112
		File fichierVueCorpus = new File(dir,name+".ecv"); //$NON-NLS-1$
113
		return FichiersJava.enregistrerCorpus(corpus, fichierCorpus) && FichiersJava.enregistrerVue(vue, fichierVueCorpus);
114 114
	}
115 115

  
116 116
	public static Vue getVue(Corpus corpus) {
tmp/org.txm.analec.rcp/src/org/txm/analec/commands/EditVue.java (revision 916)
12 12

  
13 13
import visuAnalec.VisuMain;
14 14
import visuAnalec.donnees.Corpus;
15
import visuAnalec.donnees.VisuStructure;
16 15
import visuAnalec.util.GMessages;
17 16
import visuAnalec.vue.VisuVue;
18 17
import visuAnalec.vue.Vue;
......
20 19
public class EditVue  extends AbstractHandler {
21 20

  
22 21
	/** The ID. */
23
	public static String ID = "org.txm.analec.commands.LoadAnnotationStructure"; //$NON-NLS-1$
22
	public static String ID = EditVue.class.getName(); //$NON-NLS-1$
24 23
	Vue vue;
25 24
	/** The selection. */
26 25

  
tmp/org.txm.analec.rcp/plugin.xml (revision 916)
30 30
               </visibleWhen>
31 31
            </command>
32 32
            <command
33
                  commandId="org.txm.analec.commands.EditVue"
34
                  style="push">
35
               <visibleWhen
36
                     checkEnabled="false">
37
                  <reference
38
                        definitionId="OneCorpusSelected">
39
                  </reference>
40
               </visibleWhen>
41
            </command>
42
            <command
33 43
                  commandId="org.txm.analec.commands.SaveCorpus"
34 44
                  style="push">
35 45
               <visibleWhen
......
246 256
            id="org.txm.analec.commands.ImportTEIAnnotations"
247 257
            name="%command.name.11">
248 258
      </command>
259
      <command
260
            categoryId="org.txm.rcp.category.txm"
261
            defaultHandler="org.txm.analec.commands.EditVue"
262
            id="org.txm.analec.commands.EditVue"
263
            name="Edit view">
264
      </command>
249 265
   </extension>
250 266
   <extension
251 267
         point="org.eclipse.ui.views">
tmp/org.txm.oriflamms.rcp/META-INF/MANIFEST.MF (revision 916)
4 4
Bundle-Vendor: Textometrie.org
5 5
Bundle-ActivationPolicy: lazy
6 6
Bundle-Version: 1.0.0.qualifier
7
Bundle-Name: Oriflamms
7
Bundle-Name: org.txm.oriflamms.rcp
8 8
Bundle-ManifestVersion: 2
9 9
Bundle-Activator: oriflamms.Activator
10 10
Bundle-SymbolicName: org.txm.oriflamms.rcp;singleton:=true

Formats disponibles : Unified diff