Subversion Repositories eFlore/Applications.coel

Rev

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

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