Revision 47489 trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.ui/src/main/java/org/gvsig/gui/beans/controls/comboscale/ComboScale.java

View differences:

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