Subversion Repositories eFlore/Applications.coel

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

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