Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 18 | Rev 27 | 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 ;
50
 
22 aperonnet 51
	private TreePanel panneauMotsCles = null ;
52
	private HashMap motclesIds = null ;
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") ;
22 aperonnet 69
		panneauMotsCles = new TreePanel("Mots clés") ;
16 aperonnet 70
 
22 aperonnet 71
 
72
		TreeNode root = new TreeNode("Mots clés") ;
73
		panneauMotsCles.setRootNode(root) ;
74
		panneauMotsCles.setRootVisible(false);
75
 
18 aperonnet 76
		panneauInfoGrid.setLayout(new VerticalLayout());
77
		panneauInfoGrid.setHeight(500);
78
		Label labelComm = new Label("Commentaires :") ;
79
		labelComm.setHeight("20px") ;
80
		commentaireGeneral = new TextArea() ;
81
		commentaireGeneral.setAutoWidth(true) ;
82
		Label labelDate = new Label("Date :") ;
16 aperonnet 83
 
18 aperonnet 84
		labelDate.setHeight("20px") ;
85
 
86
		dateImage = new DateField() ;
87
		dateImage.setAutoWidth(true) ;
88
		dateImage.setFormat("d/m/y") ;
89
 
90
		validerInfo = new Button("OK") ;
91
		validerInfo.addListener(new ButtonListenerAdapter() {
92
 
93
			public void onClick(Button button, EventObject e) {
94
 
95
				getIMediateur().mettreAJourInfo(commentaireGeneral.getText(), dateImage.getRawValue()) ;
96
 
97
			}
98
		});
99
 
100
		panneauInfoGrid.add(labelComm) ;
101
		panneauInfoGrid.add(commentaireGeneral) ;
102
		panneauInfoGrid.add(labelDate) ;
103
		panneauInfoGrid.add(dateImage) ;
104
		panneauInfoGrid.add(validerInfo) ;
105
 
106
 
107
 
16 aperonnet 108
		this.add(panneauInfoGrid) ;
109
		this.add(panneauExifGrid) ;
110
		this.add(panneauIptcGrid) ;
22 aperonnet 111
		this.add(panneauMotsCles) ;
16 aperonnet 112
 
113
		gViewExif = new GridView();
114
		gViewExif.setForceFit(true);
115
 
116
		ExifGrid = new PropertyGridPanel() ;
117
		ExifGrid.setId("meta_exif");
118
		ExifGrid.setView(gViewExif);
119
		ExifGrid.setNameText("Métadonnées Exif");
120
		ExifGrid.setAutoWidth(true);
121
		ExifGrid.setAutoHeight(true);
122
		ExifGrid.setSorted(false);
22 aperonnet 123
		ExifGrid.setDisableSelection(true);
16 aperonnet 124
 
125
		gViewIptc = new GridView();
126
		gViewIptc.setForceFit(true);
127
 
128
		IptcGrid = new PropertyGridPanel() ;
129
		IptcGrid.setId("meta_iptc");
130
		IptcGrid.setView(gViewIptc);
131
 
132
		IptcGrid.setNameText("Métadonnées IPTC");
133
		IptcGrid.setAutoWidth(true);
134
		IptcGrid.setAutoHeight(true);
135
		IptcGrid.setSorted(false);
136
 
137
		panneauExifGrid.add(ExifGrid);
138
		panneauIptcGrid.add(IptcGrid);
139
 
22 aperonnet 140
		this.doLayout(true) ;
141
 
16 aperonnet 142
	}
143
 
22 aperonnet 144
	public void desactiverPanneau()
145
	{
146
		this.setDisabled(true) ;
147
	}
148
 
149
	public void activerPanneau()
150
	{
151
		this.setDisabled(false) ;
152
	}
153
 
16 aperonnet 154
	public ImageMediateur getIMediateur()
155
	{
156
		return imediateur ;
157
	}
158
 
159
 
160
	public void rafraichir(Object nouvelleDonnees, boolean repandreRafraichissement) {
161
 
162
		if(nouvelleDonnees instanceof Object[])
163
		{
164
			Object meta[] = (Object[])nouvelleDonnees ;
165
			String[][] exif = (String[][])meta[0] ;
166
			String[][] iptc = (String[][])meta[1] ;
18 aperonnet 167
			String[][] gen = (String[][])meta[2] ;
16 aperonnet 168
 
169
			NameValuePair[] exifSource = new NameValuePair[exif.length] ;
170
			NameValuePair[] iptcSource = new NameValuePair[iptc.length] ;
171
 
172
 
173
			int maxLength ;
174
			if(exif.length <= iptc.length)
175
			{
176
				maxLength = iptc.length ;
177
			}
178
			else
179
			{
180
				maxLength = exif.length ;
181
			}
182
 
183
			for(int i = 0; i < maxLength ; i++)
184
			{
185
				if(i < exif.length)
186
				{
187
					exifSource[i] = new NameValuePair(exif[i][0],exif[i][1]) ;
188
				}
189
 
190
				if(i < iptc.length)
191
				{
192
					iptcSource[i] = new NameValuePair(iptc[i][0],iptc[i][1]) ;
193
				}
194
			}
195
 
18 aperonnet 196
			commentaireGeneral.setValue(gen[0][1]) ;
16 aperonnet 197
 
18 aperonnet 198
			dateImage.setValue(gen[1][1]) ;
199
 
16 aperonnet 200
			ExifGrid.setSource(exifSource);
201
			IptcGrid.setSource(iptcSource);
22 aperonnet 202
 
16 aperonnet 203
		}
204
	}
205
}