Revision 44076

View differences:

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
12 12
import org.apache.commons.lang3.StringUtils;
13 13
import org.gvsig.expressionevaluator.Function;
14 14
import org.gvsig.expressionevaluator.SymbolTable;
15
import org.gvsig.expressionevaluator.swing.CalculatorController;
15 16
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingManager;
16 17
import org.gvsig.expressionevaluator.swing.JExpressionBuilder;
17 18
import org.gvsig.expressionevaluator.swing.Element;
......
174 175
        return x;
175 176
    }
176 177

  
178
    @Override
179
    public CalculatorController createCalculatorController(JTextComponent text, int dataType) {
180
        DefaultCalculatorController controller = new DefaultCalculatorController(text,dataType);
181
        return controller;
182
    }
183

  
177 184
}
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/DefaultCalculatorController.java
1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6
package org.gvsig.expressionevaluator.swing.impl;
7

  
8
import org.gvsig.expressionevaluator.swing.CalculatorController;
9
import java.util.Objects;
10
import javax.swing.text.JTextComponent;
11
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
12
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
13
import org.gvsig.expressionevaluator.MutableSymbolTable;
14
import org.gvsig.expressionevaluator.SymbolTable;
15
import org.gvsig.tools.dataTypes.DataTypes;
16
import org.gvsig.tools.ToolsLocator;
17
import org.gvsig.tools.dataTypes.CoercionException;
18
import org.gvsig.tools.dataTypes.DataTypesManager;
19

  
20
/**
21
 *
22
 * @author jjdelcerro
23
 */
24
class DefaultCalculatorController<T> implements CalculatorController<T> {
25
    
26
    private final JTextComponent text;
27
    private final int dataType;
28
    private final MutableSymbolTable defaultSymbolTable;
29

  
30
    public DefaultCalculatorController(JTextComponent text, int dataType) {
31
        this.text = text;
32
        this.dataType = dataType;
33
        this.defaultSymbolTable = ExpressionEvaluatorLocator.getManager().createSymbolTable();
34
    }
35

  
36
    @Override
37
    public void addSymbolTable(SymbolTable symbolTable) {
38
        this.defaultSymbolTable.addSymbolTable(symbolTable);
39
    }
40

  
41
    @Override
42
    public MutableSymbolTable getSymbolTable() {
43
        return this.defaultSymbolTable;
44
    }
45

  
46
    @Override
47
    public T get() {
48
        String source = this.text.getText();
49
        try {
50
            ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
51
            Object value = manager.evaluate(this.defaultSymbolTable, source);
52
            if (this.dataType != DataTypes.OBJECT) {
53
                DataTypesManager dataManager = ToolsLocator.getDataTypesManager();
54
                value = dataManager.coerce(this.dataType, value);
55
            }
56
            return (T) value;
57
        } catch (CoercionException ex) {
58
            if (this.dataType != DataTypes.STRING) {
59
                return (T) source;
60
            }
61
            return null;
62
        }
63
    }
64

  
65
    @Override
66
    public void set(T value) {
67
        this.text.setText(Objects.toString(value, ""));
68
    }
69

  
70
    @Override
71
    public void coerceAndSet(Object value) {
72
        if (this.dataType != DataTypes.OBJECT) {
73
            DataTypesManager dataManager = ToolsLocator.getDataTypesManager();
74
            try {
75
                value = dataManager.coerce(this.dataType, value);
76
            } catch (CoercionException ex) {
77
            }
78
        }
79
        this.text.setText(Objects.toString(value, ""));
80
    }
81

  
82
    @Override
83
    public void setEnabled(boolean enabled) {
84
        this.text.setEnabled(enabled);
85
    }
86

  
87
    @Override
88
    public boolean isEnabled() {
89
        return this.text.isEnabled();
90
    }
91
    
92
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.api/src/main/java/org/gvsig/expressionevaluator/swing/CalculatorController.java
1
package org.gvsig.expressionevaluator.swing;
2

  
3
import org.gvsig.expressionevaluator.MutableSymbolTable;
4
import org.gvsig.expressionevaluator.SymbolTable;
5

  
6
/**
7
 *
8
 * @author jjdelcerro
9
 */
10
public interface CalculatorController<T> {
11

  
12
    public void addSymbolTable(SymbolTable symbolTable);
13

  
14
    public MutableSymbolTable getSymbolTable();
15

  
16
    public T get();
17

  
18
    public void set(T value);
19

  
20
    public void coerceAndSet(Object value);
21

  
22
    public boolean isEnabled();
23

  
24
    public void setEnabled(boolean enabled);
25
    
26
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.api/src/main/java/org/gvsig/expressionevaluator/swing/ExpressionEvaluatorSwingManager.java
11 11
import org.gvsig.expressionevaluator.swing.Element.FunctionElement;
12 12
import org.gvsig.expressionevaluator.swing.Element.GroupElement;
13 13
import org.gvsig.expressionevaluator.swing.Element.VariableElement;
14
import org.gvsig.tools.swing.api.pickercontroller.PickerController;
14 15

  
15 16
public interface ExpressionEvaluatorSwingManager {
16 17

  
......
39 40
    public VariableElement createVariableElement(String label, String source, String name, String typeName, String description);
40 41

  
41 42
    public ExpressionPickerController createExpressionPickerController(JTextComponent text, JButton button);
43

  
44
    public CalculatorController createCalculatorController(JTextComponent text, int dataType);
45

  
42 46
}

Also available in: Unified diff