Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 22 | Rev 30 | 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;
16 aperonnet 27
import com.gwtext.client.widgets.grid.GridView;
28
import com.gwtext.client.widgets.grid.PropertyGridPanel;
18 aperonnet 29
import com.gwtext.client.widgets.layout.RowLayout;
30
import com.gwtext.client.widgets.layout.RowLayoutData;
31
import com.gwtext.client.widgets.layout.VerticalLayout;
32
import com.gwtext.client.widgets.menu.DateItem;
33
import com.gwtext.client.widgets.menu.Menu;
22 aperonnet 34
import com.gwtext.client.widgets.tree.TreeNode;
35
import com.gwtext.client.widgets.tree.TreePanel;
16 aperonnet 36
 
37
public class PanneauMetadonneesVue extends TabPanel implements Rafraichissable {
38
 
39
	private ImageMediateur imediateur = null ;
40
 
41
	private PropertyGridPanel ExifGrid = null ;
42
	private PropertyGridPanel IptcGrid = null ;
43
 
44
	private GridView gViewExif = null ;
45
	private GridView gViewIptc = null ;
46
 
47
	private Panel panneauExifGrid = null;
48
	private Panel panneauIptcGrid = null ;
49
	private Panel panneauInfoGrid = null ;
27 aperonnet 50
	private ArbreMotsClesVue panneauMotsCles = null ;
16 aperonnet 51
 
18 aperonnet 52
	private TextField commentaireGeneral = null ;
53
	private DateField dateImage = null ;
54
	Button validerInfo = null ;
55
 
16 aperonnet 56
	boolean estInstancie = false ;
57
 
58
	public PanneauMetadonneesVue(ImageMediateur im)
59
	{
60
		super() ;
61
 
62
		imediateur = im ;
63
 
64
		panneauExifGrid = new Panel("Exif") ;
65
		panneauIptcGrid = new Panel("Iptc") ;
66
		panneauInfoGrid = new Panel("info") ;
27 aperonnet 67
		panneauMotsCles = new ArbreMotsClesVue(im) ;
16 aperonnet 68
 
18 aperonnet 69
		panneauInfoGrid.setLayout(new VerticalLayout());
70
		panneauInfoGrid.setHeight(500);
71
		Label labelComm = new Label("Commentaires :") ;
72
		labelComm.setHeight("20px") ;
73
		commentaireGeneral = new TextArea() ;
74
		commentaireGeneral.setAutoWidth(true) ;
75
		Label labelDate = new Label("Date :") ;
16 aperonnet 76
 
18 aperonnet 77
		labelDate.setHeight("20px") ;
78
 
79
		dateImage = new DateField() ;
80
		dateImage.setAutoWidth(true) ;
81
		dateImage.setFormat("d/m/y") ;
82
 
83
		validerInfo = new Button("OK") ;
84
		validerInfo.addListener(new ButtonListenerAdapter() {
85
 
86
			public void onClick(Button button, EventObject e) {
87
 
88
				getIMediateur().mettreAJourInfo(commentaireGeneral.getText(), dateImage.getRawValue()) ;
89
 
90
			}
91
		});
92
 
93
		panneauInfoGrid.add(labelComm) ;
94
		panneauInfoGrid.add(commentaireGeneral) ;
95
		panneauInfoGrid.add(labelDate) ;
96
		panneauInfoGrid.add(dateImage) ;
97
		panneauInfoGrid.add(validerInfo) ;
98
 
99
 
100
 
16 aperonnet 101
		this.add(panneauInfoGrid) ;
102
		this.add(panneauExifGrid) ;
103
		this.add(panneauIptcGrid) ;
22 aperonnet 104
		this.add(panneauMotsCles) ;
16 aperonnet 105
 
106
		gViewExif = new GridView();
107
		gViewExif.setForceFit(true);
108
 
109
		ExifGrid = new PropertyGridPanel() ;
110
		ExifGrid.setId("meta_exif");
111
		ExifGrid.setView(gViewExif);
112
		ExifGrid.setNameText("Métadonnées Exif");
113
		ExifGrid.setAutoWidth(true);
114
		ExifGrid.setAutoHeight(true);
115
		ExifGrid.setSorted(false);
22 aperonnet 116
		ExifGrid.setDisableSelection(true);
16 aperonnet 117
 
118
		gViewIptc = new GridView();
119
		gViewIptc.setForceFit(true);
120
 
121
		IptcGrid = new PropertyGridPanel() ;
122
		IptcGrid.setId("meta_iptc");
123
		IptcGrid.setView(gViewIptc);
124
 
125
		IptcGrid.setNameText("Métadonnées IPTC");
126
		IptcGrid.setAutoWidth(true);
127
		IptcGrid.setAutoHeight(true);
128
		IptcGrid.setSorted(false);
129
 
130
		panneauExifGrid.add(ExifGrid);
131
		panneauIptcGrid.add(IptcGrid);
132
 
22 aperonnet 133
		this.doLayout(true) ;
134
 
16 aperonnet 135
	}
136
 
22 aperonnet 137
	public void desactiverPanneau()
138
	{
139
		this.setDisabled(true) ;
140
	}
141
 
142
	public void activerPanneau()
143
	{
144
		this.setDisabled(false) ;
145
	}
146
 
16 aperonnet 147
	public ImageMediateur getIMediateur()
148
	{
149
		return imediateur ;
150
	}
151
 
152
 
153
	public void rafraichir(Object nouvelleDonnees, boolean repandreRafraichissement) {
154
 
155
		if(nouvelleDonnees instanceof Object[])
156
		{
157
			Object meta[] = (Object[])nouvelleDonnees ;
158
			String[][] exif = (String[][])meta[0] ;
159
			String[][] iptc = (String[][])meta[1] ;
18 aperonnet 160
			String[][] gen = (String[][])meta[2] ;
16 aperonnet 161
 
162
			NameValuePair[] exifSource = new NameValuePair[exif.length] ;
163
			NameValuePair[] iptcSource = new NameValuePair[iptc.length] ;
164
 
165
 
166
			int maxLength ;
167
			if(exif.length <= iptc.length)
168
			{
169
				maxLength = iptc.length ;
170
			}
171
			else
172
			{
173
				maxLength = exif.length ;
174
			}
175
 
176
			for(int i = 0; i < maxLength ; i++)
177
			{
178
				if(i < exif.length)
179
				{
180
					exifSource[i] = new NameValuePair(exif[i][0],exif[i][1]) ;
181
				}
182
 
183
				if(i < iptc.length)
184
				{
185
					iptcSource[i] = new NameValuePair(iptc[i][0],iptc[i][1]) ;
186
				}
187
			}
188
 
18 aperonnet 189
			commentaireGeneral.setValue(gen[0][1]) ;
16 aperonnet 190
 
18 aperonnet 191
			dateImage.setValue(gen[1][1]) ;
192
 
16 aperonnet 193
			ExifGrid.setSource(exifSource);
194
			IptcGrid.setSource(iptcSource);
22 aperonnet 195
 
16 aperonnet 196
		}
197
	}
27 aperonnet 198
 
199
	/**
200
	 * @return the panneauMotsCles
201
	 */
202
	public ArbreMotsClesVue getPanneauMotsCles() {
203
		return panneauMotsCles;
204
	}
16 aperonnet 205
}