Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.app / org.gvsig.app.mainplugin / src / main / java / org / gvsig / app / project / documents / view / expressionevaluator / ViewLayersElement.java @ 44263

History | View | Annotate | Download (3.41 KB)

1
package org.gvsig.app.project.documents.view.expressionevaluator;
2

    
3
import java.util.ArrayList;
4
import java.util.Collection;
5
import java.util.Iterator;
6
import java.util.List;
7
import org.gvsig.app.project.documents.view.ViewDocument;
8
import org.gvsig.expressionevaluator.Function;
9
import org.gvsig.expressionevaluator.swing.Element;
10
import org.gvsig.expressionevaluator.swing.Element.GroupElement;
11
import org.gvsig.expressionevaluator.swing.Element.SimpleElement;
12
import org.gvsig.expressionevaluator.swing.ExpressionBuilderConfig;
13
import org.gvsig.expressionevaluator.swing.spi.AbstractElement;
14
import org.gvsig.fmap.dal.swing.DALSwingLocator;
15
import org.gvsig.fmap.dal.swing.DataSwingManager;
16
import org.gvsig.fmap.dal.swing.expressionevaluator.FeatureStoreElement;
17
import org.gvsig.fmap.mapcontext.layers.FLayer;
18
import org.gvsig.fmap.mapcontext.layers.operations.SingleLayer;
19
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
20

    
21
/**
22
 *
23
 * @author jjdelcerro
24
 */
25
public class ViewLayersElement
26
        extends AbstractElement
27
        implements GroupElement, SimpleElement {
28

    
29
    private class LayerEntryElement
30
            extends AbstractElement
31
            implements ConstantElement {
32

    
33
        private final FLayer layer;
34
        
35
        public LayerEntryElement(ViewDocument view, FLayer layer) {
36
            super(layer.getName(), layer.getName(), "expressionbuilder-element-constant");
37
            this.layer = layer;
38
        }
39

    
40
        @Override
41
        public Object getValue() {
42
            return layer.getName();
43
        }
44
    }
45

    
46
    private final List<Element> children;
47

    
48
    public ViewLayersElement(ViewDocument view) {
49
        super(view.getName());
50
        
51
        DataSwingManager dalSwingManager = DALSwingLocator.getSwingManager();
52

    
53
        this.children = new ArrayList<>();
54
        Iterator<FLayer> it = view.deepiterator();
55
        while( it.hasNext() ) {
56
            FLayer layer = it.next();
57
            if( layer instanceof SingleLayer ) {
58
                if( layer instanceof FLyrVect ) {
59
                    FeatureStoreElement e = dalSwingManager.createFeatureStoreElement();
60
                    e.setFeatureStore(((FLyrVect) layer).getFeatureStore());
61
                    e.setName(layer.getName());
62
                    this.children.add(e);
63
                } else {
64
                    ConstantElement e = new LayerEntryElement(view, layer);
65
                    this.children.add(e);
66
                }
67
            }
68
        }
69
    }
70

    
71
    @Override
72
    public Element setConfig(ExpressionBuilderConfig config) {
73
        super.setConfig(config); 
74
        for (Element child : this.children) {
75
            child.setConfig(config);
76
        }
77
        return this;
78
    }
79

    
80
    @Override
81
    public Collection<Element> getValues() {
82
        return this.children;
83
    }
84
    
85
    @Override
86
    public Element get(int index) {
87
        return this.children.get(index);
88
    }
89

    
90
    @Override
91
    public int size() {
92
        return this.children.size();
93
    }
94

    
95
    @Override
96
    public Iterator<Element> iterator() {
97
        return this.children.iterator();
98
    }
99

    
100
    @Override
101
    public void addElement(Element element) {
102
        this.children.add(element);
103
    }
104

    
105
    @Override
106
    public void addElement(Function function) {
107
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
108
    }
109

    
110
    @Override
111
    public List<Element> getElements() {
112
        return this.children;
113
    }
114

    
115
}