Subversion Repositories eFlore/Applications.coel

Rev

Rev 1327 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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