Subversion Repositories eFlore/Applications.cel

Rev

Rev 212 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 212 Rev 371
Line -... Line 1...
-
 
1
package org.tela_botanica.client.image;
-
 
2
 
-
 
3
 
-
 
4
import java.util.List;
-
 
5
 
-
 
6
import org.tela_botanica.client.CarnetEnLigneMediateur;
-
 
7
import org.tela_botanica.client.interfaces.IdVue;
-
 
8
import org.tela_botanica.client.interfaces.ListePaginable;
-
 
9
import org.tela_botanica.client.interfaces.Rafraichissable;
-
 
10
import org.tela_botanica.client.interfaces.VueListable;
-
 
11
import org.tela_botanica.client.modeles.Configuration;
-
 
12
import org.tela_botanica.client.modeles.ListeObservation;
-
 
13
import org.tela_botanica.client.observation.ObservationMediateur;
-
 
14
import org.tela_botanica.client.vues.ArbreMotsClesVue;
-
 
15
import org.tela_botanica.client.vues.image.BarreOutilsVue;
-
 
16
import org.tela_botanica.client.vues.image.BarreRechercheFiltreVue;
-
 
17
import org.tela_botanica.client.vues.image.GalerieImageVue;
-
 
18
import org.tela_botanica.client.vues.image.ListeImageVue;
-
 
19
import org.tela_botanica.client.vues.image.MenuImageVue;
-
 
20
import org.tela_botanica.client.vues.image.MiniListeObservationVue;
-
 
21
import org.tela_botanica.client.vues.image.PanneauFiltresImagesVues;
-
 
22
import org.tela_botanica.client.vues.image.PanneauMetadonneesVue;
-
 
23
import org.tela_botanica.client.vues.image.ZoomImageVue;
-
 
24
 
-
 
25
import com.google.gwt.core.client.GWT;
-
 
26
import com.google.gwt.core.client.JavaScriptObject;
-
 
27
import com.google.gwt.user.client.DOM;
-
 
28
import com.google.gwt.user.client.Element;
-
 
29
import com.google.gwt.user.client.Event;
-
 
30
import com.google.gwt.user.client.Window;
-
 
31
import com.google.gwt.user.client.ui.HTML;
-
 
32
import com.gwtext.client.core.EventObject;
-
 
33
import com.gwtext.client.core.Ext;
-
 
34
import com.gwtext.client.core.ExtElement;
-
 
35
import com.gwtext.client.core.RegionPosition;
-
 
36
import com.gwtext.client.data.Record;
-
 
37
import com.gwtext.client.data.Store;
-
 
38
import com.gwtext.client.data.Tree;
-
 
39
import com.gwtext.client.dd.DragData;
-
 
40
import com.gwtext.client.dd.DragSource;
-
 
41
import com.gwtext.client.widgets.BoxComponent;
-
 
42
import com.gwtext.client.widgets.Component;
-
 
43
import com.gwtext.client.widgets.Container;
-
 
44
import com.gwtext.client.widgets.DataView;
-
 
45
import com.gwtext.client.widgets.Panel;
-
 
46
import com.gwtext.client.widgets.TabPanel;
-
 
47
import com.gwtext.client.widgets.MessageBox.AlertCallback;
-
 
48
import com.gwtext.client.widgets.event.ComponentListenerAdapter;
-
 
49
import com.gwtext.client.widgets.event.ContainerListener;
-
 
50
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
-
 
51
import com.gwtext.client.widgets.event.PanelListener;
-
 
52
import com.gwtext.client.widgets.event.PanelListenerAdapter;
-
 
53
import com.gwtext.client.widgets.grid.GridDragData;
-
 
54
import com.gwtext.client.widgets.layout.BorderLayout;
-
 
55
import com.gwtext.client.widgets.layout.BorderLayoutData;
-
 
56
import com.gwtext.client.widgets.layout.FitLayout;
-
 
57
import com.gwtext.client.widgets.menu.BaseItem;
-
 
58
import com.gwtext.client.widgets.menu.Item;
-
 
59
import com.gwtext.client.widgets.menu.Menu;
-
 
60
import com.gwtext.client.widgets.menu.event.MenuListenerAdapter;
-
 
61
import com.gwtext.client.widgets.tree.TreeEditor;
-
 
62
import com.gwtext.client.widgets.tree.TreeNode;
-
 
63
 
-
 
64
/**
-
 
65
 * Mediateur gérant les interactions entre vues et les echanges de données C'est
-
 
66
 * un singleton.
-
 
67
 * 
-
 
68
 * @author aurelien
-
 
69
 * 
-
 
70
 */
-
 
71
 
-
 
72
// TODO : Deporter les methodes de ListePaginable dans la liste  d'images
-
 
73
 
-
 
74
public class ImageMediateur implements ListePaginable{
-
 
75
 
-
 
76
	/**
-
 
77
	 * le mediateur des observations qui lie la partie images au carnet
-
 
78
	 */
-
 
79
	private CarnetEnLigneMediateur cMediateur = null;
-
 
80
 
-
 
81
	
-
 
82
	private static ImageMediateur thisMediateur = null ;
-
 
83
	/**
-
 
84
	 * booleen qui verifie l'unicite de l'instance (donc static)
-
 
85
	 */
-
 
86
	private static boolean estInstancie = false;
-
 
87
 
-
 
88
	/**
-
 
89
	 * modele de données
-
 
90
	 */
-
 
91
	private ImageModele iModele = null;
-
 
92
 
-
 
93
	/**
-
 
94
	 * L'identifiant utilisateur. Par défaut, il vaut 0
-
 
95
	 */
-
 
96
	private String identifiant = "0";
-
 
97
 
-
 
98
	/**
-
 
99
	 * panneau principal des images (onglet "images")
-
 
100
	 */
-
 
101
	private Panel panneauPrincipalImage = null ;
-
 
102
 
-
 
103
	/**
-
 
104
	 * panneau a onglet pour la liste, la galerie et la vue en grand
-
 
105
	 */
-
 
106
	private TabPanel ongletsImage = null;
-
 
107
 
-
 
108
	/**
-
 
109
	 * panneau de filtrage
-
 
110
	 */
-
 
111
	private PanneauFiltresImagesVues filtres = null;
-
 
112
 
-
 
113
	/**
-
 
114
	 * conteneur du panneau a onglets
-
 
115
	 */
-
 
116
	private Panel panneauMenuEtOngletsImage = null;
-
 
117
 
-
 
118
	/**
-
 
119
	 * galerie de miniature
-
 
120
	 */
-
 
121
	private GalerieImageVue galerieImage = null;
-
 
122
 
-
 
123
	/**
-
 
124
	 * liste détaillée des images
-
 
125
	 */
-
 
126
	private ListeImageVue listeImage = null;
-
 
127
 
-
 
128
	/**
-
 
129
	 * vue agrandie de la l'image selectionnée
-
 
130
	 */
-
 
131
	private ZoomImageVue zoomImage = null;
-
 
132
 
-
 
133
	/**
-
 
134
	 * panneau a onglets affichant les métadonnées et les mots clés
-
 
135
	 */
-
 
136
	private PanneauMetadonneesVue metadonneesIptcExif = null;
-
 
137
 
-
 
138
	/**
-
 
139
	 * panneau conteneur pour le panneau a onglet des metadonnées
-
 
140
	 */
-
 
141
	private final Panel detailsEtMotsCles = new Panel("Détails et mots clés");
-
 
142
 
-
 
143
	/**
-
 
144
	 * menu contextuel de manipulation des images
-
 
145
	 */
-
 
146
	private MenuImageVue menuImageVue = null;
-
 
147
 
-
 
148
	/**
-
 
149
	 * barre d'outils
-
 
150
	 */
-
 
151
	private BarreOutilsVue barreOutilsVue = null;
-
 
152
 
-
 
153
	/**
-
 
154
	 * l'indice du dernier onglet sélectionné
-
 
155
	 */
-
 
156
	private int dernierIndexOnglet = 0;
-
 
157
 
-
 
158
	/**
-
 
159
	 * booleen explicitant s'il y a une selection en cours
-
 
160
	 */
-
 
161
	private boolean selection = false;
-
 
162
 
-
 
163
 
-
 
164
	/**
-
 
165
	 * Filtre pour les commentaires
-
 
166
	 */
-
 
167
	private BarreRechercheFiltreVue filtreCommentaires = null;
-
 
168
	
-
 
169
	/**
-
 
170
	 * Boolean indiquand si le médiateur a seulement été crée ou bien si tous
-
 
171
	 * les composants ont été crées
-
 
172
	 */
-
 
173
	private boolean estInitialise = false;
-
 
174
 
-
 
175
	/**
-
 
176
	 * constructeur privé (on accède a la classe par la méthode getInstance)
-
 
177
	 */
-
 
178
	private ImageMediateur() {			
-
 
179
				initialiser() ;
-
 
180
	}
-
 
181
 
-
 
182
	/**
-
 
183
	 * constructeur avec paramètres privé (on accède a la classe par la méthode
-
 
184
	 * getInstance)
-
 
185
	 * 
-
 
186
	 * @param cm
-
 
187
	 *            le médiateur du carnet à associer à la partie image
-
 
188
	 */
-
 
189
	private ImageMediateur(CarnetEnLigneMediateur cm) {
-
 
190
		
-
 
191
		cMediateur = cm;
-
 
192
		panneauPrincipalImage = new Panel("Images") ;
-
 
193
		panneauPrincipalImage.addListener(new PanelListenerAdapter() {
-
 
194
			public boolean doBeforeRender(Component c) {
-
 
195
				if(!estInitialise) {
-
 
196
					initialiser() ;
-
 
197
				}
-
 
198
				return true;
-
 
199
			}
-
 
200
		});
-
 
201
	}
-
 
202
 
-
 
203
	/**
-
 
204
	 * Change la valeur du booleen de selection
-
 
205
	 * 
-
 
206
	 * @param selection
-
 
207
	 *            la nouvelle valeur du booléen
-
 
208
	 */
-
 
209
	public void setSelection(boolean selection) {
-
 
210
		this.selection = selection;
-
 
211
	}
-
 
212
 
-
 
213
	/**
-
 
214
	 * renvoie la valeur du booleen de selection
-
 
215
	 * 
-
 
216
	 * @return la valeur du booleen de selection
-
 
217
	 */
-
 
218
	public boolean isSelection() {
-
 
219
		return selection;
-
 
220
	}
-
 
221
 
-
 
222
	/**
-
 
223
	 * Retourne une instance de manière unique
-
 
224
	 * 
-
 
225
	 * @return l'instance unique du médiateur
-
 
226
	 */
-
 
227
	public static ImageMediateur Instance() {
-
 
228
		if (!estInstancie && thisMediateur == null) {
-
 
229
			// on en crée un nouveau
-
 
230
			estInstancie = true;
-
 
231
			thisMediateur = new ImageMediateur();
-
 
232
		}
-
 
233
		// sinon on retourne le "pointeur" vers le médiateur lui-même
-
 
234
		return thisMediateur;
-
 
235
	}
-
 
236
 
-
 
237
	/**
-
 
238
	 * Retourne une instance de manière unique en lui associant un médiateur
-
 
239
	 * pour les observations
-
 
240
	 * 
-
 
241
	 * @param cm le médiateur de carnet à associer
-
 
242
	 * @return l'instance unique du médiateur
-
 
243
	 */
-
 
244
	public static ImageMediateur Instance(CarnetEnLigneMediateur cm) {
-
 
245
		if (!estInstancie && thisMediateur == null) {
-
 
246
			// on en crée un nouveau
-
 
247
			estInstancie = true;
-
 
248
			thisMediateur = new ImageMediateur(cm);
-
 
249
		}
-
 
250
		// sinon on retourne le "pointeur" vers le médiateur lui-même
-
 
251
		return thisMediateur;
-
 
252
	}
-
 
253
	
-
 
254
	private void initialiser()
-
 
255
	{
-
 
256
		// quelques variables de position pour les borderlayouts
-
 
257
		final BorderLayoutData regionNord = new BorderLayoutData(
-
 
258
				RegionPosition.NORTH);
-
 
259
 
-
 
260
		final BorderLayoutData regionCentre = new BorderLayoutData(
-
 
261
				RegionPosition.CENTER);
-
 
262
 
-
 
263
		final BorderLayoutData regionEst = new BorderLayoutData(
-
 
264
				RegionPosition.EAST);
-
 
265
		regionEst.setSplit(true);
-
 
266
 
-
 
267
		final BorderLayoutData regionOuest = new BorderLayoutData(
-
 
268
				RegionPosition.WEST);
-
 
269
		regionOuest.setSplit(true);
-
 
270
		
-
 
271
		panneauPrincipalImage.setSize(cMediateur.getPanneauPrincipalCarnetEnLigne().getWidth(), cMediateur.getPanneauPrincipalCarnetEnLigne().getHeight()) ;
-
 
272
		panneauPrincipalImage.setLayout(new BorderLayout()) ;
-
 
273
 
-
 
274
		// on crée un modèle
-
 
275
		iModele = ImageModele.Instance(this);
-
 
276
		// et on demande l'arbre des mots clés
-
 
277
 
-
 
278
		// on gère la mise en page du panneau principal
-
 
279
 
-
 
280
		// on crée le panneau des filtres
-
 
281
		filtres = new PanneauFiltresImagesVues(this);
-
 
282
		filtres.s
1
283