Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1287 Rev 1327
1
package org.tela_botanica.client.composants;
1
package org.tela_botanica.client.composants;
2
 
2
 
3
import java.util.List;
3
import java.util.List;
-
 
4
import java.util.Map;
4
 
5
 
5
import org.tela_botanica.client.composants.pagination.ChargeurListe;
6
import org.tela_botanica.client.composants.pagination.ChargeurListe;
6
import org.tela_botanica.client.composants.pagination.Proxy;
7
import org.tela_botanica.client.composants.pagination.Proxy;
7
import org.tela_botanica.client.composants.pagination.TransformateurJSONaModelData;
8
import org.tela_botanica.client.composants.pagination.TransformateurJSONaModelData;
8
import org.tela_botanica.client.modeles.Valeur;
9
import org.tela_botanica.client.modeles.Valeur;
9
import org.tela_botanica.client.util.Debug;
10
import org.tela_botanica.client.util.Debug;
10
 
11
 
11
import com.extjs.gxt.ui.client.event.BaseEvent;
12
import com.extjs.gxt.ui.client.event.BaseEvent;
12
import com.extjs.gxt.ui.client.event.Events;
13
import com.extjs.gxt.ui.client.event.Events;
13
import com.extjs.gxt.ui.client.event.Listener;
14
import com.extjs.gxt.ui.client.event.Listener;
14
import com.extjs.gxt.ui.client.store.ListStore;
15
import com.extjs.gxt.ui.client.store.ListStore;
-
 
16
import com.extjs.gxt.ui.client.util.Size;
-
 
17
import com.extjs.gxt.ui.client.util.Util;
15
import com.extjs.gxt.ui.client.widget.LayoutContainer;
18
import com.extjs.gxt.ui.client.widget.LayoutContainer;
16
import com.extjs.gxt.ui.client.widget.VerticalPanel;
19
import com.extjs.gxt.ui.client.widget.VerticalPanel;
17
import com.extjs.gxt.ui.client.widget.form.ComboBox;
20
import com.extjs.gxt.ui.client.widget.form.ComboBox;
-
 
21
import com.extjs.gxt.ui.client.widget.layout.FormData;
-
 
22
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
-
 
23
 
18
 
24
import com.extjs.gxt.ui.client.data.BaseModelData;
19
import com.extjs.gxt.ui.client.data.BasePagingLoadConfig;
25
import com.extjs.gxt.ui.client.data.BasePagingLoadConfig;
20
import com.extjs.gxt.ui.client.data.LoadEvent;
26
import com.extjs.gxt.ui.client.data.LoadEvent;
21
import com.extjs.gxt.ui.client.data.Loader;
27
import com.extjs.gxt.ui.client.data.Loader;
22
import com.extjs.gxt.ui.client.data.ModelData;
28
import com.extjs.gxt.ui.client.data.ModelData;
23
import com.extjs.gxt.ui.client.data.ModelType;
29
import com.extjs.gxt.ui.client.data.ModelType;
24
import com.extjs.gxt.ui.client.data.PagingLoadResult;
30
import com.extjs.gxt.ui.client.data.PagingLoadResult;
25
 
31
 
26
public class ChampComboBoxRechercheTempsReelPaginable extends LayoutContainer {
32
public class ChampComboBoxRechercheTempsReelPaginable extends LayoutContainer {
27
 
33
 
28
	  //-------------//
34
	  //-------------//
29
	 //  ATTRIBUTS	//
35
	 //  ATTRIBUTS	//
30
	//-------------//
36
	//-------------//
31
	
37
	
32
	private ListStore<ModelData> store = null;
38
	private ListStore<ModelData> store = null;
33
	private ComboBox<ModelData> combo = null;
39
	private ComboBox<ModelData> combo = null;
34
 
-
 
35
	private String recherche = "";
-
 
36
 
40
 
37
	private Proxy<?> proxy = null;
41
	private Proxy<?> proxy = null;
38
	private TransformateurJSONaModelData<PagingLoadResult<ModelData>> reader = null;
42
	private TransformateurJSONaModelData<PagingLoadResult<ModelData>> reader = null;
39
	private ChargeurListe<PagingLoadResult<ModelData>> loader = null;
43
	private ChargeurListe<PagingLoadResult<ModelData>> loader = null;
40
	
44
	
41
	private int start = 0;
45
	private int start = 0;
42
	private int limit = 10;
46
	private int limit = 10;
43
	private int largeur = 200;
47
	private int largeur = 200;
-
 
48
 
44
 
49
	private LayoutContainer lc = null;
45
	private BasePagingLoadConfig plc = null;
50
	private BasePagingLoadConfig plc = null;
46
	private ModelType modeltype = null;
51
	private ModelType modeltype = null;
47
	private String displayName = "";
52
	private String displayName = "";
48
 
-
 
-
 
53
	private String recherche = "";
49
	
54
	
50
	  //-------------//
55
	  //-------------//
51
	 //   METHODES	//
56
	 //   METHODES	//
52
	//-------------//
57
	//-------------//
53
 
58
 
54
	/*--------------
59
	/*--------------
55
	  Constructeur 
60
	  Constructeur 
56
	--------------*/
61
	--------------*/
57
	public ChampComboBoxRechercheTempsReelPaginable(Proxy<?> proxy, ModelType modeltype, String displayName) {
62
	public ChampComboBoxRechercheTempsReelPaginable(Proxy<?> proxy, ModelType modeltype, String displayName) {
58
		
63
		
59
		this.modeltype = modeltype;
64
		this.modeltype = modeltype;
60
		this.proxy = proxy;
65
		this.proxy = proxy;
61
		this.displayName = displayName;
66
		this.displayName = displayName;
62
 
67
 
63
		plc = new BasePagingLoadConfig();
68
		plc = new BasePagingLoadConfig();
64
		plc.setLimit(limit);
69
		plc.setLimit(limit);
65
		plc.setOffset(start);
70
		plc.setOffset(start);
66
		
71
		
67
		reader = new TransformateurJSONaModelData<PagingLoadResult<ModelData>>(modeltype);
72
		reader = new TransformateurJSONaModelData<PagingLoadResult<ModelData>>(modeltype);
68
		
73
		
69
		loader = new ChargeurListe<PagingLoadResult<ModelData>>(proxy, reader);
74
		loader = new ChargeurListe<PagingLoadResult<ModelData>>(proxy, reader);
70
        loader.setLimit(plc.getLimit());
75
        loader.setLimit(plc.getLimit());
71
        loader.setOffset(plc.getOffset());
76
        loader.setOffset(plc.getOffset());
72
 
77
 
73
		loader.addListener(Loader.BeforeLoad, new Listener<LoadEvent>() {
78
		loader.addListener(Loader.BeforeLoad, new Listener<LoadEvent>() {
74
			public void handleEvent(LoadEvent be) {  				
79
			public void handleEvent(LoadEvent be) {  				
75
				be.<ModelData> getConfig().set("start", be.<ModelData> getConfig().get("offset"));
80
				be.<ModelData> getConfig().set("start", be.<ModelData> getConfig().get("offset"));
76
			}  
81
			}  
77
		});
82
		});
78
 
83
 
79
		loader.addListener(Loader.Load, new Listener<LoadEvent>() {  
84
		loader.addListener(Loader.Load, new Listener<LoadEvent>() {  
80
			public void handleEvent(LoadEvent be) {  
85
			public void handleEvent(LoadEvent be) {  
81
 
86
 
82
		    }  
87
		    }  
83
		});
88
		});
84
		
89
		
85
		loader.addListener(Loader.LoadException, new Listener<LoadEvent>() {  
90
		loader.addListener(Loader.LoadException, new Listener<LoadEvent>() {  
86
			public void handleEvent(LoadEvent be) {
91
			public void handleEvent(LoadEvent be) {
87
 
92
 
88
		    }  
93
		    }  
89
		});
94
		});
90
		
95
		
91
		combo = new ComboBox<ModelData>();  
96
		combo = new ComboBox<ModelData>();  
92
		combo.setWidth(largeur);
97
		combo.setWidth(largeur);
93
		combo.setDisplayField(displayName);
98
		combo.setDisplayField(displayName);
94
		combo.setHideTrigger(false);
99
		combo.setHideTrigger(false);
95
		combo.setPageSize(plc.getLimit());
100
		combo.setPageSize(plc.getLimit());
96
        store = new ListStore<ModelData>(loader);
101
        store = new ListStore<ModelData>(loader);
97
        combo.setStore(store);
102
        combo.setStore(store);
98
        loader.load(plc, recherche);
103
        loader.load(plc, recherche);
99
		  
104
		  
100
		combo.addListener(Events.KeyUp, new Listener<BaseEvent>() {
105
		combo.addListener(Events.KeyUp, new Listener<BaseEvent>() {
101
		
106
		
102
			public void handleEvent(BaseEvent be) {
107
			public void handleEvent(BaseEvent be) {
103
				recherche = combo.getRawValue();
108
				recherche = combo.getRawValue();
104
				plc.setLimit(limit); plc.setOffset(start);
109
				plc.setLimit(limit); plc.setOffset(start);
105
				loader.setLimit(limit); loader.setOffset(start);
110
				loader.setLimit(limit); loader.setOffset(start);
106
				loader.load(plc, recherche);
111
				loader.load(plc, recherche);
107
			}
112
			}
108
			  
113
			  
109
		});
114
		});
110
		
115
		
111
		VerticalPanel vp = new VerticalPanel();  
116
		lc = new LayoutContainer();
112
		vp.add(combo);  
117
		lc.add(combo);
113
		
118
		
114
		add(vp);  
119
		add(lc);  
115
	}
120
	}
116
 
121
 
117
	
122
	
118
	/*------------
123
	/*------------
119
	  Accesseurs 
124
	  Accesseurs 
120
	------------*/
125
	------------*/
121
	public ComboBox<ModelData> getCombo()
126
	public ComboBox<ModelData> getCombo()
122
	{
127
	{
123
		return this.combo;
128
		return this.combo;
124
	}
129
	}
125
	
130
	
126
	public Valeur getValeur()
131
	public ModelData getValeur()
127
	{
132
	{
-
 
133
		if (!Util.isEmptyString(combo.getRawValue())) return combo.getSelection().get(0);
128
		return new Valeur(combo.getSelection().get(0));
134
		else return null;
129
	}
135
	}
130
	
136
	
131
	public ListStore<?> getStore()
137
	public ListStore<?> getStore()
132
	{
138
	{
133
		return combo.getStore();
139
		return combo.getStore();
134
	}
140
	}
135
	
141
	
136
	public void setWidth(int largeur)
142
	public void setWidth(int largeur)
137
	{
143
	{
138
		this.largeur = largeur;
144
		this.largeur = largeur;
139
		this.combo.setWidth(largeur);
145
		this.combo.setWidth(largeur);
140
	}
146
	}
-
 
147
	
-
 
148
	public void setWidth(int tailleLabel, int largeurTotale)
-
 
149
	{
-
 
150
		this.largeur = largeurTotale;
-
 
151
		// FIXME - problème avec la largeur de la combobox
-
 
152
		this.combo.setWidth(largeurTotale - tailleLabel);
-
 
153
		
-
 
154
		FormLayout fl = new FormLayout();
-
 
155
		fl.setLabelWidth(tailleLabel);
-
 
156
		this.lc.setSize(largeurTotale, 0);
-
 
157
		this.lc.setLayout(fl);
141
	
158
	}
142
	
159
	
143
	/*-----------------------------
160
	/*-----------------------------
144
	  Gestion du contenu du champ 
161
	  Gestion du contenu du champ 
145
	-----------------------------*/
162
	-----------------------------*/
146
	
163
	
147
	public List<ModelData> collecterValeursDuChamp()
164
	public List<ModelData> collecterValeursDuChamp()
148
	{
165
	{
149
		return combo.getSelection();
166
		return combo.getSelection();
150
	}
167
	}
151
	
168
	
152
	public void peuplerChamp(List<ModelData> selection)
169
	public void peuplerChamp(List<ModelData> selection)
153
	{
170
	{
154
		combo.setSelection(selection);
171
		combo.setSelection(selection);
155
	}
172
	}
156
 
173
 
157
	
174
	
158
	/*----------------
175
	/*----------------
159
	  Méthode privées 
176
	  Méthode privées 
160
	-----------------*/
177
	-----------------*/
161
 
-
 
162
 
178
 
163
}
179
}
164
 
180
 
165
 
181
 
166
 
182
 
167
 
183