Revision 3365 org.gvsig.vcsgis/trunk/org.gvsig.vcsgis/org.gvsig.vcsgis.swing/org.gvsig.vcsgis.swing.impl/src/main/java/org/gvsig/vcsgis/swing/impl/VCSGisEntitySelectorControllerImpl.java

View differences:

VCSGisEntitySelectorControllerImpl.java
27 27
import java.awt.event.ActionListener;
28 28
import java.util.ArrayList;
29 29
import java.util.Collections;
30
import java.util.HashSet;
30 31
import java.util.List;
32
import java.util.Set;
31 33
import java.util.function.Predicate;
32 34
import javax.swing.JButton;
33 35
import javax.swing.JList;
......
43 45
import org.gvsig.tools.swing.api.ActionListenerSupport;
44 46
import org.gvsig.tools.swing.api.ChangeListenerHelper;
45 47
import org.gvsig.tools.swing.api.FilteredListController;
48
import org.gvsig.tools.swing.api.FilteredListModel;
46 49
import org.gvsig.tools.swing.api.JListWithCheckbox;
47 50
import org.gvsig.tools.swing.api.ToolsSwingLocator;
48 51
import org.gvsig.tools.swing.api.ToolsSwingManager;
......
172 175
            this.filteredList.getModel().clear();
173 176
            return;
174 177
        }
175
        this.filteredList.getModel().clear();
178
//        this.filteredList.getModel().clear();
176 179
        Thread task = new Thread(() -> {reloadTables(this.workspace);}, "VCSGisEntitySelectorReloadEntities");
177 180
        task.start();
178 181
    }
......
249 252
        if( notInSwingThreadInvokeLater(() -> { postReloadTables(entities); }) ) {
250 253
            return;
251 254
        }
252
        this.processing = false;
253
        this.filteredList.getModel().clear();
255
        FilteredListModel model = this.filteredList.getModel();
256
        Set<String> checkeds = new HashSet<>();
257
        ListSelectionModel checkedModel = null;
258
        if(lstTablesWithCheckbox != null) {
259
            checkedModel = lstTablesWithCheckbox.getCheckedModel();
260
            for(int i = 0; i<model.getSize(); i++){
261
                if(checkedModel.isSelectedIndex(i)){
262
                    checkeds.add(((VCSGisEntity) (model.getElementAt(i).getValue())).getEntityCode());
263
                }
264
            }
265
            checkedModel.clearSelection();
266
        }
267
        model.clear();
268
        this.lstTables.getSelectionModel().clearSelection();
254 269
        for (LabeledValue<VCSGisEntity> entity : entities) {
255
            this.filteredList.getModel().addElement(entity);
270
            if(entity != null){
271
                this.filteredList.getModel().addElement(entity);
272
            }
256 273
        }
274
        
275
        if(checkedModel != null) {
276
            for(int i = 0; i<model.getSize(); i++){
277
                VCSGisEntity entity = (VCSGisEntity) (model.getElementAt(i).getValue());
278
                if(checkeds.contains(entity.getEntityCode())){
279
                    checkedModel.addSelectionInterval(i, i);
280
                }
281
            }
282
        }
283
        
284
        this.processing = false;
257 285
        this.changeListeners.fireEvent();
258 286
    }
259 287
    
......
346 374
        return this.changeListeners.hasChangeListeners();
347 375
    }
348 376

  
377
   @Override
349 378
    public void setViewFilter(Predicate<VCSGisEntity> viewFilter) {
350 379
        this.viewFilter = viewFilter;
351 380
    }
352 381

  
382
   @Override
353 383
    public void setFilter(Predicate<VCSGisEntity> filter) {
354 384
        this.filter = filter;
355 385
    }
356 386
    
387
   @Override
357 388
    public ListSelectionModel getCheckedModel() {
358 389
        if(lstTablesWithCheckbox != null){
359 390
            return lstTablesWithCheckbox.getCheckedModel();
360 391
        }
361 392
        return null;
362 393
    }
394
    
395
   @Override
396
    public void check(VCSGisEntity entity) {
397
        if (lstTablesWithCheckbox != null && entity != null) {
398
            ListModel model = this.filteredList.getModel();
399
            for (int i = 0; i < model.getSize(); i++) {
400
                LabeledValueImpl element = (LabeledValueImpl) model.getElementAt(i);
401
                VCSGisEntity ent = (VCSGisEntity) element.getValue();
402
                if (StringUtils.equalsIgnoreCase(
403
                        ent.getEntityCode(),
404
                        entity.getEntityCode()
405
                )) {
406
                    lstTablesWithCheckbox.getCheckedModel().addSelectionInterval(i, i);
407
                    return;
408
                }
409
            }
410
        }
411
    }
363 412

  
364 413
}

Also available in: Unified diff