Subversion Repositories eFlore/Applications.cel

Rev

Rev 2757 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
140 aurelien 1
package org.tela_botanica.client.vues;
2
 
3
import org.tela_botanica.client.CarnetEnLigneMediateur;
2615 aurelien 4
import org.tela_botanica.client.i18n.Msg;
140 aurelien 5
import org.tela_botanica.client.interfaces.Rafraichissable;
989 aurelien 6
import org.tela_botanica.client.modeles.objets.Utilisateur;
972 aurelien 7
 
2204 aurelien 8
import com.google.gwt.user.client.Timer;
144 aurelien 9
import com.gwtext.client.core.EventCallback;
140 aurelien 10
import com.gwtext.client.core.EventObject;
2204 aurelien 11
import com.gwtext.client.core.ListenerConfig;
140 aurelien 12
import com.gwtext.client.data.ArrayReader;
13
import com.gwtext.client.data.FieldDef;
14
import com.gwtext.client.data.MemoryProxy;
144 aurelien 15
import com.gwtext.client.data.Record;
140 aurelien 16
import com.gwtext.client.data.RecordDef;
17
import com.gwtext.client.data.Store;
18
import com.gwtext.client.data.StringFieldDef;
268 aurelien 19
import com.gwtext.client.widgets.Panel;
140 aurelien 20
import com.gwtext.client.widgets.Window;
21
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
22
import com.gwtext.client.widgets.form.ComboBox;
144 aurelien 23
import com.gwtext.client.widgets.form.event.ComboBoxListenerAdapter;
268 aurelien 24
import com.gwtext.client.widgets.layout.HorizontalLayout;
25
import com.gwtext.client.widgets.layout.RowLayout;
140 aurelien 26
 
27
public class ListeUtilisateurAdminVue extends Window implements Rafraichissable {
28
 
29
	private CarnetEnLigneMediateur cMediateur = null ;
30
	private ComboBox listeUtil = null ;
31
	private Store storeUtil = null ;
32
	private com.gwtext.client.widgets.Button OK = null;
268 aurelien 33
	private com.gwtext.client.widgets.Button annuler = null;
144 aurelien 34
	private boolean selectionUtilisateur =false;
972 aurelien 35
 
273 aurelien 36
	public String utilisateur = null;
972 aurelien 37
	public String idUtilisateur = null;
140 aurelien 38
 
144 aurelien 39
	private final int KEY_ALT = 18;
40
	private final int KEY_BACKSPACE = 8;
41
	private final int KEY_CTRL = 17;
42
	private final int KEY_DELETE = 46;
43
	private final int KEY_DOWN = 40;
44
	private final int KEY_END = 35;
45
	private final int KEY_ENTER = 13;
46
	private final int KEY_ESCAPE = 27;
47
	private final int KEY_HOME = 36;
48
	private final int KEY_LEFT = 37;
49
	private final int KEY_PAGEDOWN = 34;
50
	private final int KEY_PAGEUP = 33;
51
	private final int KEY_RIGHT = 39;
52
	private final int KEY_SHIFT = 16;
53
	private final int KEY_TAB = 9;
54
	private final int KEY_UP = 38;
55
 
2204 aurelien 56
	private Timer timerCompletion = null;
57
 
140 aurelien 58
	public ListeUtilisateurAdminVue(CarnetEnLigneMediateur cMed) {
2615 aurelien 59
		super(Msg.get("choisir-utilisateur")) ;
140 aurelien 60
 
61
		this.cMediateur = cMed;
62
 
2615 aurelien 63
		listeUtil=new ComboBox(Msg.get("utilisateurs"),"courriel",280);
140 aurelien 64
 
268 aurelien 65
		this.setLayout(new RowLayout());
140 aurelien 66
 
972 aurelien 67
		final String resultTplUtil = "<div class=\"search-item-utilisateur\">{courriel}</div>";
273 aurelien 68
 
937 aurelien 69
		utilisateur = cMediateur.getUtilisateur().getLoginUtilisateurConsulte();
972 aurelien 70
		idUtilisateur = Utilisateur.getInstance().getIdentifiantUtilisateurConsulte();
140 aurelien 71
 
72
		listeUtil.setTpl(resultTplUtil);
73
		listeUtil.setMode(ComboBox.REMOTE);
74
		listeUtil.setItemSelector("div.search-item-utilisateur");
144 aurelien 75
		listeUtil.setHideTrigger(true);
76
 
972 aurelien 77
		listeUtil.setDisplayField("courriel");
295 aurelien 78
 
2618 aurelien 79
		listeUtil.setLoadingText(Msg.get("en-recherche")+"...");
273 aurelien 80
		listeUtil.setValue(utilisateur);
140 aurelien 81
 
2615 aurelien 82
		OK= new com.gwtext.client.widgets.Button(Msg.get("ok"));
83
		annuler = new com.gwtext.client.widgets.Button(Msg.get("annuler"));
140 aurelien 84
 
268 aurelien 85
		Panel boutonPanel = new Panel();
86
		boutonPanel.setLayout(new HorizontalLayout(0));
87
 
140 aurelien 88
		add(listeUtil);
89
 
268 aurelien 90
		boutonPanel.add(OK);
91
		boutonPanel.add(annuler);
92
 
93
		add(boutonPanel);
94
 
144 aurelien 95
		this.setSize(300, 75);
140 aurelien 96
 
144 aurelien 97
		OK.addListener(new ButtonListenerAdapter() {
140 aurelien 98
 
1291 aurelien 99
			@Override
144 aurelien 100
			public void onClick(com.gwtext.client.widgets.Button button,
101
					EventObject e) {
295 aurelien 102
	    		if(valider()) {
972 aurelien 103
	    			cMediateur.changerIdentite(idUtilisateur,utilisateur);
295 aurelien 104
	    			close();
105
	    		}
144 aurelien 106
			}
107
		});
108
 
268 aurelien 109
		annuler.addListener(new ButtonListenerAdapter() {
110
 
1291 aurelien 111
			@Override
268 aurelien 112
			public void onClick(com.gwtext.client.widgets.Button button,
113
					EventObject e) {
114
				close();
115
			}
116
		});
117
 
2204 aurelien 118
	    ListenerConfig listenerConfigAutocompletion=new ListenerConfig();
119
	    listenerConfigAutocompletion.setDelay(200);
120
	    listenerConfigAutocompletion.setStopPropagation(false);
121
	    listenerConfigAutocompletion.setStopEvent(false);
122
 
144 aurelien 123
		listeUtil.addKeyPressListener(new EventCallback() {
124
 
1291 aurelien 125
			@Override
144 aurelien 126
			public void execute(EventObject e) {
127
 
128
				switch(e.getKey()) {
129
 
130
					case KEY_ALT:
131
	    	        case KEY_CTRL:
132
	    	        case KEY_DOWN:
133
	    	        case KEY_END:
134
	    	        case KEY_ESCAPE:
135
	    	        case KEY_HOME:
136
	    	        case KEY_LEFT:
137
	    	        case KEY_PAGEDOWN:
138
	    	        case KEY_PAGEUP:
139
	    	        case KEY_RIGHT:
140
	    	        case KEY_SHIFT:
141
	    	        case KEY_TAB:
142
	    	        case KEY_UP:
143
 
144
	    	        break;
145
 
146
	    	    	case KEY_ENTER:
147
 
148
		    	    	 if(selectionUtilisateur) {
149
		    	    		 selectionUtilisateur=false;
150
		    	    	 }
151
		    	    	else {
273 aurelien 152
		    	    		if(valider()) {
972 aurelien 153
		    	    			cMediateur.changerIdentite(idUtilisateur,utilisateur);
273 aurelien 154
		    	    		}
155
	    	    			close();
144 aurelien 156
		    	    	 }
157
		    	    break;
158
 
159
		    	    default:
2204 aurelien 160
		    	    	if(timerCompletion != null) {
161
		    	    		timerCompletion.cancel();
162
		    	    	}
163
	    	    		timerCompletion = new Timer() {
164
							public void run() {
165
				    	    	obtenirListeUtilisateur();
166
							}
167
	    	    		};
168
	    	    		timerCompletion.schedule(250);
144 aurelien 169
		    	    break;
140 aurelien 170
				}
144 aurelien 171
			}
2204 aurelien 172
		}, listenerConfigAutocompletion);
144 aurelien 173
 
174
		listeUtil.addListener(new ComboBoxListenerAdapter() {
175
 
1291 aurelien 176
			@Override
144 aurelien 177
			public void onSelect(ComboBox comboBox, Record record, int index) {
178
 
972 aurelien 179
				utilisateur = record.getAsString("courriel");
180
				idUtilisateur = record.getAsString("id_utilisateur");
273 aurelien 181
				listeUtil.setValue(utilisateur);
144 aurelien 182
 
183
			}
184
		});
140 aurelien 185
	}
186
 
1291 aurelien 187
	@Override
140 aurelien 188
	public void rafraichir(Object nouvelleDonnees,
189
			boolean repandreRaffraichissement) {
190
 
191
		if(nouvelleDonnees instanceof String[][]) {
192
 
193
			Object[][] utilData = (Object[][])nouvelleDonnees ;
194
 
972 aurelien 195
			FieldDef defId = new StringFieldDef("id_utilisateur");
196
			FieldDef defCourriel = new StringFieldDef("courriel");
197
			FieldDef[] defTab = {defId,defCourriel};
140 aurelien 198
 
199
			RecordDef rd = new RecordDef(defTab);
200
 
201
			final MemoryProxy dataProxy = new MemoryProxy(utilData);
202
			final ArrayReader reader = new ArrayReader(rd);
203
 
204
			storeUtil =new Store(dataProxy,reader);
205
			storeUtil.load() ;
206
 
207
			listeUtil.setStore(storeUtil);
2204 aurelien 208
 
209
			// Tentative de corriger un bug insupportable de la taille de la liste
210
			// mais ça ne marche pas à tous les coups
211
			listeUtil.collapse();
144 aurelien 212
			listeUtil.expand();
140 aurelien 213
		}
214
 
215
	}
144 aurelien 216
 
273 aurelien 217
	private boolean valider() {
218
		if(listeUtil.getValue() != null) {
219
			return true;
220
		}
221
		return false;
222
	}
223
 
144 aurelien 224
	public void obtenirListeUtilisateur() {
225
 
226
		String valeur = listeUtil.getRawValue();
227
    	cMediateur.obtenirListeUtilisateurs(valeur,this) ;
228
	}
229
 
268 aurelien 230
	public void focusChampUtilisateur() {
231
		listeUtil.focus();
232
	}
233
 
316 aurelien 234
}