Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 30 | Rev 36 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
16 aperonnet 1
package org.tela_botanica.client.vues;
2
 
3
import java.util.Date;
22 aperonnet 4
import java.util.HashMap;
16 aperonnet 5
 
6
import org.tela_botanica.client.image.ImageMediateur;
7
import org.tela_botanica.client.interfaces.Rafraichissable;
8
 
18 aperonnet 9
import com.google.gwt.core.client.JavaScriptObject;
10
import com.google.gwt.user.client.ui.ClickListener;
11
import com.google.gwt.user.client.ui.Label;
12
import com.google.gwt.user.client.ui.TextBox;
13
import com.google.gwt.user.client.ui.Widget;
14
import com.gwtext.client.core.EventObject;
16 aperonnet 15
import com.gwtext.client.core.NameValuePair;
16
import com.gwtext.client.data.Store;
17
import com.gwtext.client.data.StringFieldDef;
18 aperonnet 18
import com.gwtext.client.widgets.Button;
19
import com.gwtext.client.widgets.Component;
16 aperonnet 20
import com.gwtext.client.widgets.Panel;
21
import com.gwtext.client.widgets.TabPanel;
18 aperonnet 22
import com.gwtext.client.widgets.event.ButtonListener;
23
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
24
import com.gwtext.client.widgets.form.DateField;
25
import com.gwtext.client.widgets.form.TextArea;
26
import com.gwtext.client.widgets.form.TextField;
32 aperonnet 27
import com.gwtext.client.widgets.grid.GridPanel;
16 aperonnet 28
import com.gwtext.client.widgets.grid.GridView;
29
import com.gwtext.client.widgets.grid.PropertyGridPanel;
32 aperonnet 30
import com.gwtext.client.widgets.grid.event.GridCellListener;
18 aperonnet 31
import com.gwtext.client.widgets.layout.RowLayout;
32
import com.gwtext.client.widgets.layout.RowLayoutData;
33
import com.gwtext.client.widgets.layout.VerticalLayout;
34
import com.gwtext.client.widgets.menu.DateItem;
35
import com.gwtext.client.widgets.menu.Menu;
22 aperonnet 36
import com.gwtext.client.widgets.tree.TreeNode;
37
import com.gwtext.client.widgets.tree.TreePanel;
16 aperonnet 38
 
39
public class PanneauMetadonneesVue extends TabPanel implements Rafraichissable {
40
 
41
	private ImageMediateur imediateur = null ;
42
 
43
	private PropertyGridPanel ExifGrid = null ;
44
	private PropertyGridPanel IptcGrid = null ;
45
 
46
	private GridView gViewExif = null ;
47
	private GridView gViewIptc = null ;
48
 
49
	private Panel panneauExifGrid = null;
50
	private Panel panneauIptcGrid = null ;
51
	private Panel panneauInfoGrid = null ;
27 aperonnet 52
	private ArbreMotsClesVue panneauMotsCles = null ;
16 aperonnet 53
 
18 aperonnet 54
	private TextField commentaireGeneral = null ;
55
	private DateField dateImage = null ;
56
	Button validerInfo = null ;
57
 
16 aperonnet 58
	boolean estInstancie = false ;
59
 
60
	public PanneauMetadonneesVue(ImageMediateur im)
61
	{
62
		super() ;
63
 
64
		imediateur = im ;
65
 
66
		panneauExifGrid = new Panel("Exif") ;
67
		panneauIptcGrid = new Panel("Iptc") ;
68
		panneauInfoGrid = new Panel("info") ;
27 aperonnet 69
		panneauMotsCles = new ArbreMotsClesVue(im) ;
16 aperonnet 70
 
18 aperonnet 71
		panneauInfoGrid.setLayout(new VerticalLayout());
72
		panneauInfoGrid.setHeight(500);
73
		Label labelComm = new Label("Commentaires :") ;
74
		labelComm.setHeight("20px") ;
75
		commentaireGeneral = new TextArea() ;
76
		commentaireGeneral.setAutoWidth(true) ;
77
		Label labelDate = new Label("Date :") ;
16 aperonnet 78
 
18 aperonnet 79
		labelDate.setHeight("20px") ;
80
 
81
		dateImage = new DateField() ;
82
		dateImage.setAutoWidth(true) ;
83
		dateImage.setFormat("d/m/y") ;
84
 
85
		validerInfo = new Button("OK") ;
86
		validerInfo.addListener(new ButtonListenerAdapter() {
87
 
88
			public void onClick(Button button, EventObject e) {
89
 
90
				getIMediateur().mettreAJourInfo(commentaireGeneral.getText(), dateImage.getRawValue()) ;
91
 
92
			}
93
		});
94
 
95
		panneauInfoGrid.add(labelComm) ;
96
		panneauInfoGrid.add(commentaireGeneral) ;
97
		panneauInfoGrid.add(labelDate) ;
98
		panneauInfoGrid.add(dateImage) ;
99
		panneauInfoGrid.add(validerInfo) ;
100
 
101
 
102
 
16 aperonnet 103
		this.add(panneauInfoGrid) ;
104
		this.add(panneauExifGrid) ;
105
		this.add(panneauIptcGrid) ;
22 aperonnet 106
		this.add(panneauMotsCles) ;
16 aperonnet 107
 
108
		gViewExif = new GridView();
109
		gViewExif.setForceFit(true);
110
 
111
		ExifGrid = new PropertyGridPanel() ;
112
		ExifGrid.setId("meta_exif");
113
		ExifGrid.setView(gViewExif);
114
		ExifGrid.setNameText("Métadonnées Exif");
115
		ExifGrid.setAutoWidth(true);
116
		ExifGrid.setAutoHeight(true);
117
		ExifGrid.setSorted(false);
32 aperonnet 118
		ExifGrid.addGridCellListener(new GridCellListener() {
119
 
120
			public void onCellClick(GridPanel grid, int rowIndex, int colIndex,
121
					EventObject e) {
122
 
123
				e.stopEvent() ;
124
				ExifGrid.stopEditing() ;
125
 
126
			}
127
 
128
			public void onCellContextMenu(GridPanel grid, int rowIndex,
129
					int cellIndex, EventObject e) {
130
				// TODO Auto-generated method stub
131
 
132
			}
133
 
134
			public void onCellDblClick(GridPanel grid, int rowIndex,
135
					int colIndex, EventObject e) {
136
 
137
				e.stopEvent() ;
138
				ExifGrid.stopEditing() ;
139
 
140
			}
141
 
142
		}) ;
16 aperonnet 143
 
144
		gViewIptc = new GridView();
145
		gViewIptc.setForceFit(true);
146
 
147
		IptcGrid = new PropertyGridPanel() ;
148
		IptcGrid.setId("meta_iptc");
149
		IptcGrid.setView(gViewIptc);
150
 
151
		IptcGrid.setNameText("Métadonnées IPTC");
152
		IptcGrid.setAutoWidth(true);
153
		IptcGrid.setAutoHeight(true);
154
		IptcGrid.setSorted(false);
32 aperonnet 155
		IptcGrid.addGridCellListener(new GridCellListener() {
156
 
157
			public void onCellClick(GridPanel grid, int rowIndex, int colIndex,
158
					EventObject e) {
159
 
160
				e.stopEvent() ;
161
				ExifGrid.stopEditing() ;
162
 
163
			}
164
 
165
			public void onCellContextMenu(GridPanel grid, int rowIndex,
166
					int cellIndex, EventObject e) {
167
				// TODO Auto-generated method stub
168
 
169
			}
170
 
171
			public void onCellDblClick(GridPanel grid, int rowIndex,
172
					int colIndex, EventObject e) {
173
 
174
				e.stopEvent() ;
175
				ExifGrid.stopEditing() ;
176
 
177
			}
178
 
179
		}) ;
16 aperonnet 180
 
181
		panneauExifGrid.add(ExifGrid);
30 aperonnet 182
		panneauIptcGrid.add(IptcGrid);
16 aperonnet 183
 
22 aperonnet 184
		this.doLayout(true) ;
185
 
16 aperonnet 186
	}
187
 
22 aperonnet 188
	public void desactiverPanneau()
189
	{
190
		this.setDisabled(true) ;
191
	}
192
 
193
	public void activerPanneau()
194
	{
195
		this.setDisabled(false) ;
196
	}
197
 
16 aperonnet 198
	public ImageMediateur getIMediateur()
199
	{
200
		return imediateur ;
201
	}
202
 
203
 
204
	public void rafraichir(Object nouvelleDonnees, boolean repandreRafraichissement) {
205
 
206
		if(nouvelleDonnees instanceof Object[])
207
		{
208
			Object meta[] = (Object[])nouvelleDonnees ;
209
			String[][] exif = (String[][])meta[0] ;
210
			String[][] iptc = (String[][])meta[1] ;
18 aperonnet 211
			String[][] gen = (String[][])meta[2] ;
16 aperonnet 212
 
213
			NameValuePair[] exifSource = new NameValuePair[exif.length] ;
214
			NameValuePair[] iptcSource = new NameValuePair[iptc.length] ;
215
 
216
 
217
			int maxLength ;
218
			if(exif.length <= iptc.length)
219
			{
220
				maxLength = iptc.length ;
221
			}
222
			else
223
			{
224
				maxLength = exif.length ;
225
			}
226
 
227
			for(int i = 0; i < maxLength ; i++)
228
			{
229
				if(i < exif.length)
230
				{
231
					exifSource[i] = new NameValuePair(exif[i][0],exif[i][1]) ;
232
				}
233
 
234
				if(i < iptc.length)
235
				{
236
					iptcSource[i] = new NameValuePair(iptc[i][0],iptc[i][1]) ;
237
				}
238
			}
239
 
18 aperonnet 240
			commentaireGeneral.setValue(gen[0][1]) ;
16 aperonnet 241
 
18 aperonnet 242
			dateImage.setValue(gen[1][1]) ;
243
 
16 aperonnet 244
			ExifGrid.setSource(exifSource);
245
			IptcGrid.setSource(iptcSource);
22 aperonnet 246
 
16 aperonnet 247
		}
248
	}
27 aperonnet 249
 
250
	/**
251
	 * @return the panneauMotsCles
252
	 */
253
	public ArbreMotsClesVue getPanneauMotsCles() {
254
		return panneauMotsCles;
255
	}
16 aperonnet 256
}