Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1940 Rev 1945
Line 8... Line 8...
8
import org.tela_botanica.client.interfaces.Rafraichissable;
8
import org.tela_botanica.client.interfaces.Rafraichissable;
9
import org.tela_botanica.client.modeles.dao.ListeReferentielChampsEtendusDAO;
9
import org.tela_botanica.client.modeles.dao.ListeReferentielChampsEtendusDAO;
Line 10... Line 10...
10
 
10
 
11
import com.google.gwt.user.client.Timer;
11
import com.google.gwt.user.client.Timer;
-
 
12
import com.google.gwt.user.client.Window;
12
import com.google.gwt.user.client.Window;
13
import com.google.gwt.user.client.ui.HTML;
13
import com.google.gwt.user.client.ui.HorizontalPanel;
14
import com.google.gwt.user.client.ui.HorizontalPanel;
14
import com.gwtext.client.core.EventCallback;
15
import com.gwtext.client.core.EventCallback;
15
import com.gwtext.client.core.EventObject;
16
import com.gwtext.client.core.EventObject;
16
import com.gwtext.client.core.ListenerConfig;
17
import com.gwtext.client.core.ListenerConfig;
Line 22... Line 23...
22
import com.gwtext.client.data.Store;
23
import com.gwtext.client.data.Store;
23
import com.gwtext.client.data.StringFieldDef;
24
import com.gwtext.client.data.StringFieldDef;
24
import com.gwtext.client.widgets.Button;
25
import com.gwtext.client.widgets.Button;
25
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
26
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
26
import com.gwtext.client.widgets.form.ComboBox;
27
import com.gwtext.client.widgets.form.ComboBox;
-
 
28
import com.gwtext.client.widgets.form.Field;
27
import com.gwtext.client.widgets.form.FormPanel;
29
import com.gwtext.client.widgets.form.FormPanel;
28
import com.gwtext.client.widgets.form.TextField;
-
 
29
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter;
30
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter;
Line 30... Line 31...
30
 
31
 
31
@SuppressWarnings("unchecked")
32
@SuppressWarnings("unchecked")
Line 48... Line 49...
48
	private final int KEY_TAB = 9;
49
	private final int KEY_TAB = 9;
49
	private final int KEY_UP = 38;
50
	private final int KEY_UP = 38;
Line 50... Line 51...
50
	
51
	
51
	final ComboBox nChamp;
52
	final ComboBox nChamp;
-
 
53
	String resultTplRefPerso = "<div class=\"search-item-ref\">{label}</div>";  
52
	String resultTplRefPerso = "<div class=\"search-item-ref\">{label}</div>";  
54
	Button ajouterChampsEtenduEtFermer;
53
	final Button ajouterChampsEtendu;
55
	Button ajouterChampsEtendu;
54
	final Button annulerAjouterChampEtendu;
56
	Button annulerAjouterChampEtendu;
Line 55... Line 57...
55
	String idChamp = null;
57
	String idChamp = null;
Line 56... Line 58...
56
	
58
	
-
 
59
	private Timer timer = null;
-
 
60
	
Line 57... Line 61...
57
	private Timer timer = null;
61
	private Map<String, String> cacheClesValeur;
58
	
62
	private Record rdSelectionne = null;
59
	private Map<String, String> cacheClesValeur;
63
	private String valeurBrute = "";
60
	
64
	
Line -... Line 65...
-
 
65
	public FormulaireSaisieChampEtendu() {	
-
 
66
		super();
-
 
67
		setPaddings(3);
-
 
68
		setBodyBorder(false);
-
 
69
		
-
 
70
		HTML indicationSaisie = new HTML("Saisissez un nom de champ ou choisisez un nom proposé par l'autocomplétion "+
61
	public FormulaireSaisieChampEtendu() {	
71
				"Si vous choissisez un nom de champ existant vous pourrez profiter d'une autocomplétion "+
62
		super();
72
				"sur les valeur déjà saisies pour ce champ par les autres utilisateurs");
Line 63... Line 73...
63
		setPaddings(3);
73
		indicationSaisie.addStyleName("aideCreerChampEtendu");
64
		setBodyBorder(false);
74
		add(indicationSaisie);
Line -... Line 75...
-
 
75
		
-
 
76
		HorizontalPanel hp = new HorizontalPanel();
65
		
77
		hp.setBorderWidth(0);
-
 
78
		
66
		HorizontalPanel hp = new HorizontalPanel();
79
		nChamp = new ComboBox("Nom du champ", "nom_champ_etendu");
-
 
80
		add(nChamp);
Line -... Line 81...
-
 
81
		
67
		hp.setBorderWidth(0);
82
		ajouterChampsEtenduEtFermer = new Button("Valider");
68
		
83
		ajouterChampsEtenduEtFermer.setTooltip("Ajouter un champ étendu et fermer la fenêtre");
69
		nChamp = new ComboBox("Nom du champ", "nom_champ_etendu");
84
		ajouterChampsEtendu = new Button("Ajouter");
Line 70... Line 85...
70
		add(nChamp);
85
		ajouterChampsEtendu.setTooltip("Ajouter un champ étendu");
71
		
86
		annulerAjouterChampEtendu = new Button("Annuler");
72
		ajouterChampsEtendu = new Button("Ajouter");
87
		annulerAjouterChampEtendu.setTooltip("Fermer la fenêtre sans ajouter de champ");
73
		annulerAjouterChampEtendu = new Button("Annuler");
88
		
74
		
89
		hp.add(ajouterChampsEtenduEtFermer);
75
		hp.add(ajouterChampsEtendu);
90
		hp.add(ajouterChampsEtendu);
76
		hp.add(annulerAjouterChampEtendu);	
91
		hp.add(annulerAjouterChampEtendu);	
Line 77... Line 92...
77
		add(hp);
92
		add(hp);
Line 103... Line 118...
103
 
118
 
Line 104... Line 119...
104
				switch(e.getKey()) {
119
				switch(e.getKey()) {
105
		    	      
120
		    	      
106
					case KEY_ALT:
-
 
107
		    	      case KEY_CTRL:
121
					case KEY_ALT:
108
		    	      case KEY_ENTER:
122
		    	      case KEY_CTRL:
109
		    	      case KEY_END:
123
		    	      case KEY_END:
110
		    	      case KEY_HOME:
124
		    	      case KEY_HOME:
111
		    	      case KEY_LEFT:
125
		    	      case KEY_LEFT:
Line 115... Line 129...
115
		    	      case KEY_SHIFT:
129
		    	      case KEY_SHIFT:
116
		    	      case KEY_TAB:
130
		    	      case KEY_TAB:
117
		    	      case KEY_UP:
131
		    	      case KEY_UP:
118
	    	        break;
132
	    	        break;
Line -... Line 133...
-
 
133
	    	        
-
 
134
		    	  case KEY_ENTER:
-
 
135
  	    	    	  if(rdSelectionne != null) {
-
 
136
  	    	    		  nChamp.setValue(rdSelectionne.getAsString("label"));
-
 
137
  	    	    		  idChamp = rdSelectionne.getAsString("cle");
-
 
138
  	    	    		  valeurBrute = rdSelectionne.getAsString("label");
-
 
139
  	    	    	  }
-
 
140
	              break;
119
	    	        
141
	    	        
120
		    	    case KEY_DOWN:
142
		    	    case KEY_DOWN:
121
  	    	    	  if(nChamp.getValueAsString().isEmpty() && !nChamp.isExpanded()) {
143
  	    	    	  if(nChamp.getValueAsString().isEmpty() && !nChamp.isExpanded()) {
122
  	    	    		obtenirReferentiel("*");
144
  	    	    		obtenirListeValeurs("*");
123
  	    	    	  }
145
  	    	    	  }
Line 124... Line 146...
124
  	    	    	break;
146
  	    	    	break;
125
	    	        
147
	    	        
Line 133... Line 155...
133
		    	    	}
155
		    	    	}
134
		    	    	timer = new Timer() {
156
		    	    	timer = new Timer() {
Line 135... Line 157...
135
							
157
							
136
							@Override
158
							@Override
137
							public void run() {
159
							public void run() {
138
			  	    	      	obtenirReferentiel();
160
			  	    	      	obtenirListeValeurs();
139
							}
161
							}
140
						};
162
						};
-
 
163
						timer.schedule(300);
-
 
164
						valeurBrute = nChamp.getValueAsString();
141
						timer.schedule(300);
165
						nChamp.setValue(valeurBrute);
142
				}
166
				}
143
			}
167
			}
Line 144... Line 168...
144
	    },listenerConfigAutocompletion);
168
	    },listenerConfigAutocompletion);
145
		
169
		
146
		// Listener completion 
170
		// Listener completion 
147
	    nChamp.addListener(new ComboBoxListenerAdapter() {  
171
	    nChamp.addListener(new ComboBoxListenerAdapter() {  
148
	         @Override
172
            @Override
-
 
173
			public void onSelect(ComboBox comboBox, Record record, int index) {  
-
 
174
            	rdSelectionne = record;
-
 
175
            }
-
 
176
            
149
			public void onSelect(ComboBox comboBox, Record record, int index) {  
177
            @Override
150
	        	 nChamp.setValue(record.getAsString("label"));
178
			public void onBlur(Field field) {  
151
	        	 idChamp = record.getAsString("cle");
179
            	nChamp.setRawValue(valeurBrute);
152
	        	 nChamp.collapse();
180
            	nChamp.collapse();
Line -... Line 181...
-
 
181
            }
-
 
182
	     });
-
 
183
	    
-
 
184
	    ajouterChampsEtenduEtFermer.addListener(new ButtonListenerAdapter() {			
-
 
185
			@Override
-
 
186
			public void onClick(Button button, EventObject e) {
-
 
187
				if(champEtenduEstValide()) {
-
 
188
					surValidation(validerEtRenvoyerChampEtendu());
-
 
189
				} else {
-
 
190
					Window.alert("Le nom du champ étendu ne peut pas être vide");
-
 
191
				}	
153
	         }  
192
			}
154
	     });
193
		});
155
	    
194
	    
-
 
195
	    ajouterChampsEtendu.addListener(new ButtonListenerAdapter() {			
156
	    ajouterChampsEtendu.addListener(new ButtonListenerAdapter() {			
196
			@Override
-
 
197
			public void onClick(Button button, EventObject e) {
-
 
198
				if(champEtenduEstValide()) {
-
 
199
					surAjout(validerEtRenvoyerChampEtendu());
-
 
200
					raz();
157
			@Override
201
				} else {
158
			public void onClick(Button button, EventObject e) {
202
					Window.alert("Le nom du champ étendu ne peut pas être vide");
Line 159... Line 203...
159
				validerChampEtendu();
203
				}
160
			}
204
			}
Line 166... Line 210...
166
				surAnnulation();
210
				surAnnulation();
167
			}
211
			}
168
		});
212
		});
169
	}
213
	}
Line -... Line 214...
-
 
214
	
-
 
215
	private void raz() {
-
 
216
		timer = null;
-
 
217
		idChamp = null;
-
 
218
		nChamp.clearValue();
-
 
219
		nChamp.focus();
-
 
220
	}
170
	
221
	
171
	private void validerChampEtendu() {
222
	private ChampSaisieEtendu validerEtRenvoyerChampEtendu() {		
172
		String valeurChamp = nChamp.getValueAsString();
-
 
173
		if(valeurChamp != null && !valeurChamp.isEmpty()) {			
223
		String valeurChamp = nChamp.getValueAsString();
174
			String idNouveauChamp = "";
224
		String idNouveauChamp = "";
175
			if(!estUnChampSelectionne(valeurChamp)) {
225
		if(!estUnChampSelectionne(valeurChamp)) {
176
				Date date = new Date();
226
			Date date = new Date();
177
				// affectation d'un id temporaire qui sera remplacé par l'id auto généré à partir
227
			// affectation d'un id temporaire qui sera remplacé par l'id auto généré à partir
178
				// du label
228
			// du label
179
				idNouveauChamp = "tempid_"+date.getTime();
-
 
180
			} else {
-
 
181
				idNouveauChamp = idChamp; 
-
 
182
			}
-
 
183
			ChampSaisieEtendu retour = new ChampSaisieEtendu(valeurChamp, idNouveauChamp);
-
 
184
			retour.setId(idNouveauChamp);
-
 
185
			surValidation(retour);
229
			idNouveauChamp = "tempid_"+date.getTime();
186
		} else {
230
		} else {
187
			Window.alert("Le nom du champ étendu ne peut pas être vide");
231
			idNouveauChamp = idChamp; 
-
 
232
		}
-
 
233
		ChampSaisieEtendu retour = new ChampSaisieEtendu(valeurChamp, idNouveauChamp);
-
 
234
		retour.setId(idNouveauChamp);
-
 
235
		return retour;
-
 
236
	}
-
 
237
	
-
 
238
	private boolean champEtenduEstValide() {
-
 
239
		String valeurChamp = nChamp.getValueAsString();
188
		}
240
		return (valeurChamp != null && !valeurChamp.isEmpty());
Line 189... Line 241...
189
	}
241
	}
190
	
242
	
191
	private boolean estUnChampSelectionne(String valeur) {
243
	private boolean estUnChampSelectionne(String valeur) {
Line 192... Line 244...
192
		return cacheClesValeur.containsValue(valeur);
244
		return cacheClesValeur.containsValue(valeur);
193
	}
245
	}
194
	
246
	
Line 195... Line 247...
195
	private void obtenirReferentiel() {
247
	private void obtenirListeValeurs() {
196
		obtenirReferentiel(nChamp.getValueAsString());
248
		obtenirListeValeurs(nChamp.getValueAsString());
197
	}
249
	}
198
	
250
	
Line -... Line 251...
-
 
251
	private void obtenirListeValeurs(String valeur) {
199
	private void obtenirReferentiel(String valeur) {
252
		ListeReferentielChampsEtendusDAO lrce = new ListeReferentielChampsEtendusDAO(null);
200
		ListeReferentielChampsEtendusDAO lrce = new ListeReferentielChampsEtendusDAO(null);
253
		lrce.obtenirListeNomsChampsEtendus(this, valeur+"*");
Line 201... Line 254...
201
		lrce.obtenirListeNomsChampsEtendus(this, valeur+"*");
254
	}
202
	}
255