Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 27 | Rev 30 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 27 Rev 28
1
package org.tela_botanica.client.vues;
1
package org.tela_botanica.client.vues;
2
 
2
 
3
import java.util.HashMap;
3
import java.util.HashMap;
4
 
4
 
5
import org.tela_botanica.client.image.ImageMediateur;
5
import org.tela_botanica.client.image.ImageMediateur;
6
import org.tela_botanica.client.interfaces.Rafraichissable;
6
import org.tela_botanica.client.interfaces.Rafraichissable;
7
import org.tela_botanica.client.modeles.MotsClesAsynchroneDAO;
7
import org.tela_botanica.client.modeles.MotsClesAsynchroneDAO;
8
 
8
 
9
import com.google.gwt.core.client.JavaScriptObject;
9
import com.google.gwt.core.client.JavaScriptObject;
10
import com.google.gwt.user.client.Window;
10
import com.google.gwt.user.client.Window;
11
import com.gwtext.client.core.EventObject;
11
import com.gwtext.client.core.EventObject;
-
 
12
import com.gwtext.client.core.ExtElement;
12
import com.gwtext.client.data.Node;
13
import com.gwtext.client.data.Node;
13
import com.gwtext.client.data.NodeTraversalCallback;
14
import com.gwtext.client.data.NodeTraversalCallback;
14
import com.gwtext.client.data.Tree;
15
import com.gwtext.client.data.Tree;
15
import com.gwtext.client.dd.DD;
16
import com.gwtext.client.dd.DD;
16
import com.gwtext.client.dd.DragData;
17
import com.gwtext.client.dd.DragData;
17
import com.gwtext.client.dd.DragDrop;
18
import com.gwtext.client.dd.DragDrop;
18
import com.gwtext.client.widgets.BoxComponent;
19
import com.gwtext.client.widgets.BoxComponent;
19
import com.gwtext.client.widgets.Button;
20
import com.gwtext.client.widgets.Button;
20
import com.gwtext.client.widgets.Component;
21
import com.gwtext.client.widgets.Component;
21
import com.gwtext.client.widgets.Container;
22
import com.gwtext.client.widgets.Container;
-
 
23
import com.gwtext.client.widgets.Editor;
22
import com.gwtext.client.widgets.Panel;
24
import com.gwtext.client.widgets.Panel;
23
import com.gwtext.client.widgets.event.ButtonListener;
25
import com.gwtext.client.widgets.event.ButtonListener;
24
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
26
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
25
import com.gwtext.client.widgets.event.EditorListener;
27
import com.gwtext.client.widgets.event.EditorListener;
-
 
28
import com.gwtext.client.widgets.event.EditorListenerAdapter;
-
 
29
import com.gwtext.client.widgets.form.Field;
26
import com.gwtext.client.widgets.form.TextField;
30
import com.gwtext.client.widgets.form.TextField;
27
import com.gwtext.client.widgets.layout.RowLayout;
31
import com.gwtext.client.widgets.layout.RowLayout;
28
import com.gwtext.client.widgets.layout.RowLayoutData;
32
import com.gwtext.client.widgets.layout.RowLayoutData;
29
import com.gwtext.client.widgets.menu.Menu;
33
import com.gwtext.client.widgets.menu.Menu;
30
import com.gwtext.client.widgets.tree.DropNodeCallback;
34
import com.gwtext.client.widgets.tree.DropNodeCallback;
31
import com.gwtext.client.widgets.tree.TreeEditor;
35
import com.gwtext.client.widgets.tree.TreeEditor;
32
import com.gwtext.client.widgets.tree.TreeNode;
36
import com.gwtext.client.widgets.tree.TreeNode;
33
import com.gwtext.client.widgets.tree.TreePanel;
37
import com.gwtext.client.widgets.tree.TreePanel;
34
import com.gwtext.client.widgets.tree.event.TreePanelListener;
38
import com.gwtext.client.widgets.tree.event.TreePanelListener;
35
import com.gwtext.client.widgets.tree.event.TreePanelListenerAdapter;
39
import com.gwtext.client.widgets.tree.event.TreePanelListenerAdapter;
36
 
40
 
37
public class ArbreMotsClesVue extends Panel implements Rafraichissable {
41
public class ArbreMotsClesVue extends Panel implements Rafraichissable {
38
 
42
 
39
	private ImageMediateur iMediateur = null ;
43
	private ImageMediateur iMediateur = null ;
40
	
44
	
41
	private TreePanel arbreMotsCles = null ;
45
	private TreePanel arbreMotsCles = null ;
42
	private TreeEditor te = null ;
46
	private TreeEditor te = null ;
43
	private TextField tfEdit = null ;
47
	private TextField tfEdit = null ;
44
	private Button valider = null ;
48
	private Button valider = null ;
45
	private String motsClesEnCours = "" ;
49
	private String motsClesEnCours = "" ;
-
 
50
	private boolean ajoutNoeud = false ;
-
 
51
	private boolean modifNoeud = false ;
46
	
52
	
47
	public ArbreMotsClesVue(ImageMediateur im)
53
	public ArbreMotsClesVue(ImageMediateur im)
48
	{
54
	{
49
		super("Mots clés") ;
55
		super("Mots clés") ;
50
		this.setLayout(new RowLayout());
56
		this.setLayout(new RowLayout());
51
		iMediateur = im ;
57
		iMediateur = im ;
52
		
58
		
53
		arbreMotsCles = new TreePanel() ;
59
		arbreMotsCles = new TreePanel() ;
54
		arbreMotsCles.setEnableDD(true) ;
60
		arbreMotsCles.setEnableDD(true) ;
55
		
61
		
56
		TreeNode root = new TreeNode("Mots clés") ;
62
		TreeNode root = new TreeNode("Mots clés") ;
57
		root.setId("racine") ;
63
		root.setId("racine") ;
58
		String[] usObject = {"Mots clés" , "racine" } ;
64
		String[] usObject = {"Mots clés" , "racine" } ;
59
		root.setUserObject(usObject) ;
65
		root.setUserObject(usObject) ;
60
		
66
		
61
		arbreMotsCles.setRootNode(root) ;
67
		arbreMotsCles.setRootNode(root) ;
62
		arbreMotsCles.setRootVisible(true) ;
68
		arbreMotsCles.setRootVisible(true) ;
63
		arbreMotsCles.getRootNode().setIcon("tela.png") ;
69
		arbreMotsCles.getRootNode().setIcon("tela.png") ;
64
		
70
		
65
		tfEdit = new TextField() ;
71
		tfEdit = new TextField() ;
66
		te = new TreeEditor(arbreMotsCles,tfEdit) ;
72
		te = new TreeEditor(arbreMotsCles,tfEdit) ;
67
		valider = new Button("OK") ;
73
		valider = new Button("Appliquer") ;
68
		arbreMotsCles.add(te) ;
74
		arbreMotsCles.add(te) ;
69
		this.add(arbreMotsCles,new RowLayoutData("90%")) ;
75
		this.add(arbreMotsCles,new RowLayoutData("90%")) ;
70
		this.add(valider,new RowLayoutData("10%")) ;
76
		this.add(valider,new RowLayoutData("10%")) ;
71
		
77
		
72
		ajouterListeners() ;
78
		ajouterListeners() ;
73
	}
79
	}
74
	
80
	
75
	private ImageMediateur GetIMediateur() {
81
	private ImageMediateur GetIMediateur() {
76
		
82
		
77
		return iMediateur ;
83
		return iMediateur ;
78
		
84
		
79
	}
85
	}
80
	
86
	
81
	/**
87
	/**
82
	 * @return the arbreMotsCles
88
	 * @return the arbreMotsCles
83
	 */
89
	 */
84
	public TreePanel getArbreMotsCles() {
90
	public TreePanel getArbreMotsCles() {
85
		return arbreMotsCles;
91
		return arbreMotsCles;
86
	}
92
	}
87
 
93
 
88
	/**
94
	/**
89
	 * @return the te
95
	 * @return the te
90
	 */
96
	 */
91
	public TreeEditor getTe() {
97
	public TreeEditor getTe() {
92
		return te;
98
		return te;
93
	}
99
	}
94
 
100
 
95
	/**
101
	/**
96
	 * @return the tfEdit
102
	 * @return the tfEdit
97
	 */
103
	 */
98
	public TextField getTfEdit() {
104
	public TextField getTfEdit() {
99
		return tfEdit;
105
		return tfEdit;
100
	}
106
	}
101
	
107
	
102
	public void ajouterListeners()
108
	public void ajouterListeners()
103
	{
109
	{
104
		arbreMotsCles.addListener(new TreePanelListenerAdapter() {
110
		arbreMotsCles.addListener(new TreePanelListenerAdapter() {
105
			
111
			
106
			public void onClick(TreeNode node, EventObject e) {
112
			public void onClick(TreeNode node, EventObject e) {
-
 
113
				
107
				
114
				e.stopEvent() ;
108
				gererClicNoeud(node);
115
				gererClicNoeud(node);
109
			}
116
			}
110
 
117
 
111
			
118
			
112
			public void onContextMenu(TreeNode node, EventObject e) {
119
			public void onContextMenu(TreeNode node, EventObject e) {
113
				
120
				
114
				e.stopEvent() ;
121
				e.stopEvent() ;
115
				GetIMediateur().montrerContextMenuArbre(node, e , getTe()) ;
122
				GetIMediateur().montrerContextMenuArbre(node, e , getTe()) ;
116
				
123
				
117
			}
124
			}
118
		
125
		
119
			public void onDblClick(TreeNode node, EventObject e) {
126
			public void onDblClick(TreeNode node, EventObject e) {
-
 
127
				
120
				
128
				modifNoeud = true ;
121
				te.startEdit(node);
129
				te.startEdit(node);
122
			}
130
			}
123
			
131
			
124
			public void onTextChange(TreeNode node, String text, String oldText) {
132
			public void onTextChange(TreeNode node, String text, String oldText) {
-
 
133
 
-
 
134
				
125
				
135
				TreeNode nd = node ;
126
				String[] usObject = new String[2] ;
136
				String[] usObject = new String[2] ;
127
				usObject[0] = text ;
137
				usObject[0] = text ;
128
				usObject[1] = ((String[])node.getUserObject())[1] ;
138
				usObject[1] = ((String[])nd.getUserObject())[1] ;
-
 
139
				nd.setUserObject(usObject) ;
-
 
140
				
-
 
141
				if(ajoutNoeud)
-
 
142
				{
-
 
143
					GetIMediateur().ajouterMotCleDansArbre(nd,getArbreMotsCles().getTree()) ;
-
 
144
					ajoutNoeud = false ;
-
 
145
				}
-
 
146
				else
-
 
147
				{
-
 
148
					modifNoeud = false ;
-
 
149
					GetIMediateur().modifierMotCleDansArbre(nd,getArbreMotsCles().getTree()) ;
129
				node.setUserObject(usObject) ;
150
				}
130
				
151
				
131
			}
152
			}
-
 
153
			
-
 
154
			public void onMoveNode(Tree tree, TreeNode node, TreeNode oldParent, TreeNode newParent,int index)
-
 
155
			{
-
 
156
				GetIMediateur().deplacerMotCleDansArbre(node, getArbreMotsCles().getTree()) ;
-
 
157
			}
-
 
158
 
-
 
159
 
132
			
160
			
133
			public void onCheckChange(TreeNode node, boolean checked) {
161
			public void onCheckChange(TreeNode node, boolean checked) {
134
				
162
				
135
				if(checked)
163
				if(checked)
136
				{
164
				{
137
					node.bubble(new NodeTraversalCallback() {
165
					node.bubble(new NodeTraversalCallback() {
138
						
166
						
139
						public boolean execute(Node node)
167
						public boolean execute(Node node)
140
						{
168
						{
141
							TreeNode tn = getArbreMotsCles().getNodeById(node.getId()) ;
169
							TreeNode tn = getArbreMotsCles().getNodeById(node.getId()) ;
142
							tn.getUI().toggleCheck(true) ;
170
							tn.getUI().toggleCheck(true) ;
143
							
171
							
144
							return true ;
172
							return true ;
145
						}
173
						}
146
					}) ;
174
					}) ;
147
				}
175
				}
148
			}
176
			}
149
		}) ;
177
		}) ;
-
 
178
		
150
		
179
		
151
		valider.addListener(new ButtonListenerAdapter() {
180
		valider.addListener(new ButtonListenerAdapter() {
152
 
181
 
153
			public void onClick(Button button, EventObject e) {
182
			public void onClick(Button button, EventObject e) {
154
				
183
				
155
				motsClesEnCours = "" ;
184
				motsClesEnCours = "" ;
156
				getArbreMotsCles().getRootNode().cascade(new NodeTraversalCallback() {
185
				getArbreMotsCles().getRootNode().cascade(new NodeTraversalCallback() {
157
					
186
					
158
					public boolean execute(Node node) {
187
					public boolean execute(Node node) {
159
					
188
					
160
							TreeNode tn = getArbreMotsCles().getNodeById(node.getId()) ;
189
							TreeNode tn = getArbreMotsCles().getNodeById(node.getId()) ;
161
 
190
 
162
								String[] usObject =  (String[])tn.getUserObject() ;
191
								String[] usObject =  (String[])tn.getUserObject() ;
163
								GetIMediateur().mettreAjourMotsClesId(usObject[0],usObject[1]) ;
192
								GetIMediateur().mettreAjourMotsClesId(usObject[0],usObject[1]) ;
164
									
193
									
165
									if(tn.getUI().isChecked())
194
									if(tn.getUI().isChecked())
166
									{
195
									{
167
										motsClesEnCours += usObject[1]+"," ;
196
										motsClesEnCours += usObject[1]+"," ;
168
									}
197
									}
169
							
198
							
170
							return true ;
199
							return true ;
171
					}
200
					}
172
					
201
					
173
				});
202
				});
174
				
203
				
175
				GetIMediateur().mettreAjourMotsCles(motsClesEnCours) ;
204
				GetIMediateur().mettreAjourMotsCles(motsClesEnCours,arbreMotsCles.getTree()) ;
176
			}
205
			}
177
		}) ;
206
		}) ;
178
		
207
		
179
	}
208
	}
180
	
209
	
181
	public void supprimerNoeud(TreeNode n)
210
	public void supprimerNoeud(TreeNode n)
182
	{
211
	{
183
		n.getParentNode().removeChild(n);
212
		n.getParentNode().removeChild(n);
184
		n.destroy() ;
213
		n.destroy() ;
-
 
214
		GetIMediateur().supprimerMotCleDansArbre(n, arbreMotsCles.getTree()) ;
185
	}
215
	}
186
	
216
	
187
	public void ajouterNoeud(TreeNode parent)
217
	public void ajouterNoeud(TreeNode parent)
188
	{
218
	{
-
 
219
		
-
 
220
		ajoutNoeud = true ;
189
		TreeNode nd = new TreeNode("");
221
		TreeNode nd = new TreeNode("");
190
		nd.setIcon("tela.png") ;
222
		nd.setIcon("tela.png") ;
191
		nd.setChecked(true);
223
		nd.setChecked(true);
192
		String[] usObject = new String[2] ;
224
		String[] usObject = new String[2] ;
193
		usObject[0] = "" ;
225
		usObject[0] = "" ;
194
		usObject[1] = Integer.toString(nd.hashCode()) ;
226
		usObject[1] = Integer.toString(nd.hashCode()) ;
195
		nd.setId(usObject[1]) ;
227
		nd.setId(usObject[1]) ;
196
		nd.setUserObject(usObject) ;
228
		nd.setUserObject(usObject) ;
197
		parent.appendChild(nd);
229
		parent.appendChild(nd);
198
		parent.expand();
230
		parent.expand();
199
		te.startEdit(nd);
231
		te.startEdit(nd);
200
	}
232
	}
201
	
233
	
202
	public void gererClicNoeud(TreeNode node)
234
	public void gererClicNoeud(TreeNode node)
203
	{
235
	{
204
		if(node.getUI().isChecked())
236
		if(node.getUI().isChecked())
205
		{
237
		{
206
			node.setChecked(false) ;
238
			node.getUI().toggleCheck(false) ;
207
		}
239
		}
208
		else
240
		else
209
		{
241
		{
210
			node.setChecked(true) ;
242
			node.getUI().toggleCheck(true) ;
211
		}
243
		}
212
	}
244
	}
213
	
245
	
214
	public void cocherMotsCles(final String[] motsClesIds)
246
	public void cocherMotsCles(final String[] motsClesIds)
215
	{
247
	{
216
		getArbreMotsCles().getRootNode().cascade(new NodeTraversalCallback() {
248
		getArbreMotsCles().getRootNode().cascade(new NodeTraversalCallback() {
217
 
249
 
218
			public boolean execute(Node node) {
250
			public boolean execute(Node node) {
219
				
251
				
220
				for(int i = 0 ; i < motsClesIds.length ; i++)
252
				for(int i = 0 ; i < motsClesIds.length ; i++)
221
				{	
253
				{	
222
					String usObject[] = (String[])node.getUserObject() ;
254
					String usObject[] = (String[])node.getUserObject() ;
223
					String nodeId = usObject[1] ;
255
					String nodeId = usObject[1] ;
224
					
256
					
225
					getArbreMotsCles().getNodeById(node.getId()).getUI().toggleCheck(false) ;
257
					getArbreMotsCles().getNodeById(node.getId()).getUI().toggleCheck(false) ;
226
								
258
								
227
					if(nodeId.equals(motsClesIds[i]))
259
					if(nodeId.equals(motsClesIds[i]))
228
					{
260
					{
229
						getArbreMotsCles().getNodeById(nodeId).getUI().toggleCheck(true) ;
261
						getArbreMotsCles().getNodeById(nodeId).getUI().toggleCheck(true) ;
230
						return true ;
262
						return true ;
231
					}
263
					}
232
				}
264
				}
233
				return true;
265
				return true;
234
			}
266
			}
235
			
267
			
236
		}) ;
268
		}) ;
237
	}
269
	}
238
	
270
	
239
	public void rafraichir(Object nouvelleDonnees,
271
	public void rafraichir(Object nouvelleDonnees,
240
			boolean repandreRaffraichissement) {
272
			boolean repandreRafraichissement) {
241
		
273
		
242
		if(nouvelleDonnees instanceof Tree)
274
		if(nouvelleDonnees instanceof Tree)
243
		{
275
		{
244
			Tree nouvelArbre = (Tree)nouvelleDonnees ;
276
			Tree nouvelArbre = (Tree)nouvelleDonnees ;
245
			getArbreMotsCles().setRootNode(nouvelArbre.getRootNode()) ;
277
			getArbreMotsCles().setRootNode(nouvelArbre.getRootNode()) ;
246
		}
278
		}
247
		
279
		
248
		if(nouvelleDonnees instanceof String[])
280
		if(nouvelleDonnees instanceof String[])
249
		{
281
		{
250
			String[] motsClesIds = (String[])nouvelleDonnees ;
282
			String[] motsClesIds = (String[])nouvelleDonnees ;
251
			cocherMotsCles(motsClesIds) ;
283
			cocherMotsCles(motsClesIds) ;
252
		}
284
		}
253
		
285
		
254
	}
286
	}
255
 
287
 
256
}
288
}