Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.expressionevaluator / org.gvsig.expressionevaluator.swing / org.gvsig.expressionevaluator.swing.impl / src / main / java / org / gvsig / expressionevaluator / swing / impl / DefaultExpressionBuilderConfig.java @ 44098

History | View | Annotate | Download (4.16 KB)

1
package org.gvsig.expressionevaluator.swing.impl;
2

    
3
import java.util.Collection;
4
import java.util.Collections;
5
import java.util.HashMap;
6
import java.util.List;
7
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
8
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
9
import org.gvsig.expressionevaluator.SymbolTable;
10
import org.gvsig.expressionevaluator.swing.Element;
11
import org.gvsig.expressionevaluator.swing.ElementFactory;
12
import org.gvsig.expressionevaluator.swing.ExpressionBuilderConfig;
13
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingManager;
14

    
15
/**
16
 *
17
 * @author jjdelcerro
18
 */
19
public class DefaultExpressionBuilderConfig
20
        implements ExpressionBuilderConfig {
21

    
22
    private List<Element> elements;
23
    private int limit;
24
    private HashMap<String, SymbolTable> symbolTables;
25
    private final ExpressionEvaluatorSwingManager manager;
26
    private boolean scriptsEnabled = true;
27
    private SymbolTable previewSymbolTable;
28

    
29
    public DefaultExpressionBuilderConfig(ExpressionEvaluatorSwingManager manager) {
30
        this.manager = manager;
31
        this.limit = 6;
32
        initSymbolTables();
33
    }
34

    
35
    private void initSymbolTables() {
36
        ExpressionEvaluatorManager theManager = ExpressionEvaluatorLocator.getManager();
37
        for (SymbolTable symbolTable : theManager.getSymbolTables()) {
38
            if (theManager.isAutoload(symbolTable)) {
39
                this.addSymbolTable(symbolTable);
40
            }
41
        }
42
    }
43

    
44
    @Override
45
    public List<Element> getElements() {
46
        if (this.elements == null) {
47
            this.elements = manager.createElements(this.getSymbolTables());
48
            for (ElementFactory factory : manager.getElementFactories()) {
49
                if (factory.isAutoload()) {
50
                    Element e = factory.createElement();
51
                    this.elements.add(e);
52
                }
53
            }
54
        }
55
        return Collections.unmodifiableList(elements);
56
    }
57

    
58
    @Override
59
    public void addElement(Element element) {
60
        if( element==null ) {
61
            return;
62
        }
63
        this.getElements(); // Forzamos a crear la lista de elementos
64
        for (Element theElement : this.elements) {
65
            if (theElement.getName().equalsIgnoreCase(element.getName())) {
66
                return;
67
            }
68
        }
69
        this.elements.add(element);
70
    }
71

    
72
    @Override
73
    public Collection<SymbolTable> getSymbolTables() {
74
        return Collections.unmodifiableCollection(this.symbolTables.values());
75
    }
76

    
77
    @Override
78
    public void addSymbolTable(String name) {
79
        ExpressionEvaluatorManager theManager = ExpressionEvaluatorLocator.getManager();
80
        SymbolTable symbolTable = theManager.getSymbolTable(name);
81
        if (symbolTable == null) {
82
            throw new IllegalArgumentException("Can't locate symbol table '" + name + "'.");
83
        }
84
        addSymbolTable(symbolTable);
85
    }
86

    
87
    @Override
88
    public void addSymbolTable(SymbolTable symbolTable) {
89
        if (symbolTable == null) {
90
            return;
91
        }
92
        if (this.elements != null) {
93
            throw new IllegalStateException("Can not add symbol tables once the elements are built.");
94
        }
95
        if (this.symbolTables == null) {
96
            this.symbolTables = new HashMap<>();
97
        }
98
        this.symbolTables.put(symbolTable.getName(), symbolTable);
99
    }
100

    
101
    @Override
102
    public void removeAllSymbolTables() {
103
        this.symbolTables.clear();
104
    }
105

    
106
    @Override
107
    public int getSimpleElementsLimit() {
108
        return this.limit;
109
    }
110

    
111
    @Override
112
    public void setSimpleElementsLimit(int limit) {
113
        this.limit = limit;
114
    }
115

    
116
    @Override
117
    public void removeSymbolTable(String name) {
118
        this.symbolTables.remove(name);
119
    }
120

    
121
    @Override
122
    public void setScriptsEnabled(boolean enabled) {
123
        this.scriptsEnabled = enabled;
124
    }
125

    
126
    @Override
127
    public boolean getScriptsEnabled() {
128
        return this.scriptsEnabled;
129
    }
130

    
131
    @Override
132
    public SymbolTable getPreviewSymbolTable() {
133
        return this.previewSymbolTable;
134
    }
135

    
136
    @Override
137
    public void setPreviewSymbolTable(SymbolTable symbolTable) {
138
        this.previewSymbolTable = symbolTable;
139
    }
140

    
141
    
142
}