Revision 45292 branches/org.gvsig.desktop-cvsgis1/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.fmap.control/src/main/java/org/gvsig/fmap/mapcontrol/LayersTreeModel.java

View differences:

LayersTreeModel.java
13 13
import org.gvsig.fmap.mapcontext.layers.FLayers;
14 14
import org.gvsig.tools.evaluator.Evaluator;
15 15
import org.gvsig.tools.evaluator.EvaluatorData;
16
import org.slf4j.Logger;
17
import org.slf4j.LoggerFactory;
16 18

  
17 19
public class LayersTreeModel implements TreeModel {
20
    
21
    public static final Logger LOGGER = LoggerFactory.getLogger(LayersTreeModel.class);
18 22

  
19 23
    private final List<TreeModelListener> listeners = new ArrayList();
20 24
    protected FLayers layers;
......
88 92
        if (!(parent instanceof FLayers)) {
89 93
            return null;
90 94
        }
91
        return ((FLayers) parent).getLayer(index);
95
        
96
        int count = 0;
97
        for (int i = 0; i < ((FLayers) parent).getLayersCount(); i++) {
98
            FLayer layer = ((FLayers) parent).getLayer(i);
99
            try {
100
                if(index == count){
101
                    return layer;
102
                }
103
                if (!(layer instanceof FLayers)) {
104
                    this.datafilter.layer = layer;
105
                    if (BooleanUtils.isTrue((Boolean) this.filter.evaluate(this.datafilter))) {
106
                        count++;
107
                    }
108
                } else {
109
                    count++;
110
                }
111
            } catch (Exception ex) {
112
                LOGGER.debug("Can't process layer", ex);
113
                // Do nothing, skyp this layer on error.
114
            }
115
        }
116
        
117
        return null;
92 118
    }
93 119

  
94 120
    @Override
......
108 134
                    if (BooleanUtils.isTrue((Boolean) this.filter.evaluate(this.datafilter))) {
109 135
                        count++;
110 136
                    }
137
                } else {
138
                    count++;
111 139
                }
112 140
            } catch (Exception ex) {
141
                LOGGER.debug("Can't process layer", ex);
113 142
                // Do nothing, skyp this layer on error.
114 143
            }
115 144
        }

Also available in: Unified diff