Revision 47489 trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.ui/src/main/java/org/gvsig/gui/beans/controls/comboscale/ComboScale.java
ComboScale.java | ||
---|---|---|
52 | 52 |
|
53 | 53 |
private boolean bDoCallListeners = true; |
54 | 54 |
|
55 |
private boolean isScaleCombo; |
|
55 |
// private boolean isScaleCombo;
|
|
56 | 56 |
|
57 | 57 |
static private int eventId = Integer.MIN_VALUE; |
58 | 58 |
|
... | ... | |
162 | 162 |
((ComboScaleItem) jComboBox.getSelectedItem()) |
163 | 163 |
.getValue(); |
164 | 164 |
} |
165 |
insertScaleIfNotPresent(scale); |
|
165 |
setScale(scale, false); |
|
166 |
// insertScaleIfNotPresent(scale); |
|
166 | 167 |
callActionCommandListeners(scale); |
167 | 168 |
} |
168 | 169 |
} |
... | ... | |
184 | 185 |
getJComboBox().setModel(newModel); |
185 | 186 |
} |
186 | 187 |
|
188 |
public void setScale(long scale) { |
|
189 |
setScale(scale, true); |
|
190 |
|
|
191 |
} |
|
187 | 192 |
/** |
188 | 193 |
* This funcion ONLY sets the text in combo. It will NOT call listeners. |
189 | 194 |
* |
190 | 195 |
* @param scale |
191 | 196 |
*/ |
192 |
public void setScale(long scale) {
|
|
197 |
public synchronized void setScale(long scale, boolean temporal) {
|
|
193 | 198 |
bDoCallListeners = false; |
194 |
getJComboBox().setSelectedItem(new ComboScaleItem(scale)); |
|
195 |
bDoCallListeners = true; |
|
199 |
try { |
|
200 |
DefaultComboBoxModel model = |
|
201 |
(DefaultComboBoxModel) jComboBox.getModel(); |
|
196 | 202 |
|
197 |
DefaultComboBoxModel model = |
|
198 |
(DefaultComboBoxModel) jComboBox.getModel(); |
|
199 |
|
|
200 |
//The item is inserted in the data model but marked as temporal |
|
201 |
//Only one temporal can be in the data model |
|
202 |
for (int i = 0; i < model.getSize(); i++) { |
|
203 |
ComboScaleItem itemScale = (ComboScaleItem) model.getElementAt(i); |
|
204 |
if (itemScale.isTemporal()) { |
|
205 |
model.removeElement(itemScale); |
|
206 |
break; |
|
207 |
} |
|
208 |
} |
|
209 |
insertScaleIfNotPresent(scale, true); |
|
210 |
} |
|
211 |
|
|
212 |
private void insertScaleIfNotPresent(long scale, boolean isTemporal) { |
|
213 |
// Si viene de un setScale, no insertamos la escala en el combo |
|
214 |
if (!bDoCallListeners) |
|
215 |
return; |
|
216 |
|
|
217 |
DefaultComboBoxModel model = |
|
218 |
(DefaultComboBoxModel) jComboBox.getModel(); |
|
219 |
// model=new DefaultComboBoxModel(); |
|
220 |
boolean inserted = false; |
|
221 |
for (int i = 0; i < model.getSize(); i++) { |
|
222 |
ComboScaleItem itemScale = (ComboScaleItem) model.getElementAt(i); |
|
223 |
if (scale == itemScale.getValue()) { |
|
224 |
inserted = true; |
|
225 |
break; |
|
226 |
} |
|
227 |
} |
|
228 |
ComboScaleItem newScaleItem = new ComboScaleItem(scale, isTemporal); |
|
229 |
if (!inserted) { |
|
203 |
//The item is inserted in the data model but marked as temporal |
|
204 |
//Only one temporal can be in the data model |
|
230 | 205 |
for (int i = 0; i < model.getSize(); i++) { |
231 |
ComboScaleItem itemScale = |
|
232 |
(ComboScaleItem) model.getElementAt(i); |
|
233 |
if (scale < itemScale.getValue()) { |
|
234 |
model.insertElementAt(newScaleItem, i); |
|
235 |
inserted = true; |
|
206 |
ComboScaleItem itemScale = (ComboScaleItem) model.getElementAt(i); |
|
207 |
if (itemScale.isTemporal()) { |
|
208 |
model.removeElement(itemScale); |
|
236 | 209 |
break; |
237 | 210 |
} |
238 | 211 |
} |
239 |
if (!inserted) |
|
240 |
model.addElement(newScaleItem); |
|
212 |
getJComboBox().setSelectedItem(new ComboScaleItem(scale, temporal)); |
|
213 |
} finally { |
|
214 |
bDoCallListeners = true; |
|
241 | 215 |
} |
242 |
jComboBox.setSelectedItem(newScaleItem); |
|
243 |
|
|
244 |
isScaleCombo = true; |
|
216 |
// insertScaleIfNotPresent(scale, true); |
|
245 | 217 |
} |
246 | 218 |
|
247 |
/** |
|
248 |
* @param scale |
|
249 |
*/ |
|
250 |
private void insertScaleIfNotPresent(long scale) { |
|
251 |
insertScaleIfNotPresent(scale, false); |
|
252 |
} |
|
219 |
// private void insertScaleIfNotPresent(long scale, boolean isTemporal) { |
|
220 |
// // Si viene de un setScale, no insertamos la escala en el combo |
|
221 |
// if (!bDoCallListeners) |
|
222 |
// return; |
|
223 |
// |
|
224 |
// DefaultComboBoxModel model = |
|
225 |
// (DefaultComboBoxModel) jComboBox.getModel(); |
|
226 |
// // model=new DefaultComboBoxModel(); |
|
227 |
// boolean inserted = false; |
|
228 |
// for (int i = 0; i < model.getSize(); i++) { |
|
229 |
// ComboScaleItem itemScale = (ComboScaleItem) model.getElementAt(i); |
|
230 |
// if (scale == itemScale.getValue()) { |
|
231 |
// inserted = true; |
|
232 |
// break; |
|
233 |
// } |
|
234 |
// } |
|
235 |
// ComboScaleItem newScaleItem = new ComboScaleItem(scale, isTemporal); |
|
236 |
// if (!inserted) { |
|
237 |
// for (int i = 0; i < model.getSize(); i++) { |
|
238 |
// ComboScaleItem itemScale = |
|
239 |
// (ComboScaleItem) model.getElementAt(i); |
|
240 |
// if (scale < itemScale.getValue()) { |
|
241 |
// model.insertElementAt(newScaleItem, i); |
|
242 |
// inserted = true; |
|
243 |
// break; |
|
244 |
// } |
|
245 |
// } |
|
246 |
// if (!inserted) |
|
247 |
// model.addElement(newScaleItem); |
|
248 |
// } |
|
249 |
// jComboBox.setSelectedItem(newScaleItem); |
|
250 |
// |
|
251 |
//// isScaleCombo = true; |
|
252 |
// } |
|
253 | 253 |
|
254 |
// /** |
|
255 |
// * @param scale |
|
256 |
// */ |
|
257 |
// private void insertScaleIfNotPresent(long scale) { |
|
258 |
// insertScaleIfNotPresent(scale, false); |
|
259 |
// } |
|
260 |
|
|
254 | 261 |
private void callActionCommandListeners(long scale) { |
255 | 262 |
if (!bDoCallListeners) |
256 | 263 |
return; |
... | ... | |
298 | 305 |
} |
299 | 306 |
|
300 | 307 |
public Object setValue(Object value) { |
301 |
if (isScaleCombo) { |
|
302 |
isScaleCombo = false; |
|
303 |
return null; |
|
304 |
} |
|
308 |
// if (isScaleCombo) {
|
|
309 |
// isScaleCombo = false;
|
|
310 |
// return null;
|
|
311 |
// }
|
|
305 | 312 |
try { |
306 | 313 |
long scale = Long.parseLong((String) value); |
307 | 314 |
|
Also available in: Unified diff