Subversion Repositories eFlore/Applications.cel

Rev

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