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 / DefaultExpressionEvaluatorSwingManager.java @ 43970
History | View | Annotate | Download (3.44 KB)
1 | 43939 | jjdelcerro | |
---|---|---|---|
2 | package org.gvsig.expressionevaluator.swing.impl; |
||
3 | |||
4 | import java.util.ArrayList; |
||
5 | import java.util.HashMap; |
||
6 | import java.util.List; |
||
7 | import java.util.Map; |
||
8 | import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator; |
||
9 | import org.gvsig.expressionevaluator.ExpressionEvaluatorManager; |
||
10 | import org.gvsig.expressionevaluator.Function; |
||
11 | import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingManager; |
||
12 | import org.gvsig.expressionevaluator.swing.JExpressionBuilder; |
||
13 | import org.gvsig.expressionevaluator.swing.JExpressionBuilder.Element; |
||
14 | import org.gvsig.expressionevaluator.swing.JExpressionBuilder.GroupElement; |
||
15 | |||
16 | |||
17 | public class DefaultExpressionEvaluatorSwingManager |
||
18 | implements ExpressionEvaluatorSwingManager {
|
||
19 | |||
20 | private List<Element> elements; |
||
21 | |||
22 | public DefaultExpressionEvaluatorSwingManager() {
|
||
23 | |||
24 | } |
||
25 | |||
26 | private void initElements() { |
||
27 | ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager(); |
||
28 | Map<String, Function> functions = new HashMap<>(); |
||
29 | functions.putAll(manager.getAllFunctions()); |
||
30 | functions.putAll(manager.getAllOperators()); |
||
31 | |||
32 | Map<String,GroupElement> functionGroups = new HashMap<>(); |
||
33 | Map<String,GroupElement> operatorGroups = new HashMap<>(); |
||
34 | for (Function function : functions.values()) {
|
||
35 | if( function.isOperator() ) {
|
||
36 | String groupName = function.group();
|
||
37 | GroupElement group = operatorGroups.get(groupName); |
||
38 | if( group == null ) { |
||
39 | group = new DefaultGroupElement(groupName);
|
||
40 | operatorGroups.put(groupName, group); |
||
41 | } |
||
42 | group.addElement(new DefaultFunctionElement(function));
|
||
43 | } else {
|
||
44 | String groupName = function.group();
|
||
45 | GroupElement group = functionGroups.get(groupName); |
||
46 | if( group == null ) { |
||
47 | group = new DefaultGroupElement(groupName);
|
||
48 | functionGroups.put(groupName, group); |
||
49 | } |
||
50 | group.addElement(new DefaultFunctionElement(function));
|
||
51 | } |
||
52 | } |
||
53 | 43969 | jjdelcerro | GroupElement builtinFunctions = this.createGroup("_Builtin_functions"); |
54 | 43939 | jjdelcerro | for (GroupElement group : functionGroups.values()) {
|
55 | builtinFunctions.addElement(group); |
||
56 | } |
||
57 | GroupElement operatorFunctions = new DefaultGroupElement("_Operators"); |
||
58 | for (GroupElement group : operatorGroups.values()) {
|
||
59 | operatorFunctions.addElement(group); |
||
60 | } |
||
61 | this.elements = new ArrayList<>(); |
||
62 | this.elements.add(operatorFunctions);
|
||
63 | this.elements.add(builtinFunctions);
|
||
64 | } |
||
65 | |||
66 | @Override
|
||
67 | public List<Element> getElements() { |
||
68 | if( this.elements==null ) { |
||
69 | initElements(); |
||
70 | } |
||
71 | return this.elements; |
||
72 | } |
||
73 | |||
74 | @Override
|
||
75 | 43969 | jjdelcerro | public GroupElement createGroup(String name) { |
76 | DefaultGroupElement g = new DefaultGroupElement(name);
|
||
77 | return g;
|
||
78 | } |
||
79 | |||
80 | @Override
|
||
81 | 43970 | jjdelcerro | public GroupElement createGroup(String name, List<Element>elements) { |
82 | DefaultGroupElement g = new DefaultGroupElement(name);
|
||
83 | return g;
|
||
84 | } |
||
85 | |||
86 | @Override
|
||
87 | 43969 | jjdelcerro | public Element createElement(Function function) { |
88 | Element f = new DefaultFunctionElement(function); |
||
89 | return f;
|
||
90 | } |
||
91 | |||
92 | @Override
|
||
93 | 43939 | jjdelcerro | public JExpressionBuilder createJExpressionBuilder() {
|
94 | DefaultJExpressionBuilder x = new DefaultJExpressionBuilder(this); |
||
95 | return x;
|
||
96 | } |
||
97 | |||
98 | } |