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 / elements / DefaultFunctionElement.java @ 45633

History | View | Annotate | Download (4.93 KB)

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.elements;
7

    
8
import java.util.List;
9
import org.apache.commons.lang3.StringUtils;
10
import org.gvsig.expressionevaluator.Function;
11
import org.gvsig.expressionevaluator.swing.Element.FunctionElement;
12
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingLocator;
13
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingManager;
14
import org.gvsig.expressionevaluator.swing.FunctionAdditionalPanelFactory;
15
import org.gvsig.expressionevaluator.swing.JExpressionBuilder;
16
import org.gvsig.expressionevaluator.swing.spi.AbstractElement;
17
import org.gvsig.tools.ToolsLocator;
18
import org.gvsig.tools.i18n.I18nManager;
19
import org.gvsig.tools.swing.api.Component;
20

    
21
/**
22
 *
23
 * @author jjdelcerro
24
 */
25
public class DefaultFunctionElement
26
        extends AbstractElement
27
        implements FunctionElement {
28

    
29
    private final Function function;
30

    
31
    public DefaultFunctionElement(Function function) {
32
        super(
33
                function.name(),
34
                function.name(),
35
                function.isSQLCompatible()
36
                ? "expressionbuilder-element-function-sql"
37
                : "expressionbuilder-element-function"
38
        );
39
        this.function = function;
40
    }
41

    
42
    @Override
43
    public Function getFunction() {
44
        return this.function;
45
    }
46

    
47
    @Override
48
    public boolean isEnabled() {
49
        try {
50
            if( this.getConfig().getPreferences().isSQLCompatible() ) {
51
                return this.function.isSQLCompatible();
52
            }
53
        } catch(Exception ex) {
54
            
55
        }
56
        return true;
57
    }
58

    
59
    @Override
60
    public Component getAditionalPanel(JExpressionBuilder expressionBuilder) {
61
        ExpressionEvaluatorSwingManager manager = ExpressionEvaluatorSwingLocator.getManager();
62
        FunctionAdditionalPanelFactory factory = manager.getFunctionAdditionalPanelFactory(this.function.name());
63
        if (factory == null) {
64
            return null;
65
        }
66
        return factory.createAdditionalPanel(expressionBuilder);
67
    }
68

    
69
    @Override
70
    public String getName() {
71
        return this.function.name();
72
    }
73

    
74
    @Override
75
    public Object getValue() {
76
        return this.function.name();
77
    }
78

    
79
    @Override
80
    public String getLabel() {
81
        return "<html><b>" + function.name() + "</b> return " + function.returnType() + "</html>";
82
    }
83

    
84
    @Override
85
    public String getRenderedValue() {
86
        return function.template() == null ? function.name() + "({{}})" : function.template();
87
    }
88

    
89
    @Override
90
    public String getDescription() {
91
        I18nManager i18n = ToolsLocator.getI18nManager();
92

    
93
        StringBuilder html = new StringBuilder();
94
        html.append("<html>\n");
95

    
96
        Function theFunction = this.getFunction();
97
        
98
        // Lo primero llamamos a description() para forzar la recarga de los
99
        // recursos si fuese necesaria.
100
        String functionDescription = theFunction.description();
101

    
102
        html.append("<b>").append(i18n.getTranslation("_Function")).append("</b> ").append(this.getName()).append("<br>\n<br>\n");
103
        List<String> aliases = theFunction.aliases();
104
        if( aliases!=null && !aliases.isEmpty() ) {
105
            html.append("<b>").append(i18n.getTranslation("_Aliases")).append(":</b> ").append("<ul>\n");
106
            for (String alias : aliases) {
107
                html.append("<li>").append(alias).append("</li>\n");
108
            }
109
            html.append("</ul>\n");
110
        }
111
        html.append("<b>").append(i18n.getTranslation("_Return")).append("</b> ");
112
        html.append(StringUtils.isEmpty(theFunction.returnType()) ? "Objec" : theFunction.returnType());
113
        html.append("<br>\n");
114
        html.append("<b>").append(i18n.getTranslation("_Template")).append("</b> ");
115
        html.append(StringUtils.isEmpty(theFunction.template()) ? this.getName() + "()" : theFunction.template());
116
        html.append("<br>\n");
117

    
118
        String[] args = theFunction.descriptionArgs();
119
        if (args != null) {
120
            html.append("<b>").append(i18n.getTranslation("_Arguments")).append(":</b> ").append("<ul>\n");
121
            for (String arg : args) {
122
                html.append("<li>").append(arg).append("</li>\n");
123
            }
124
            html.append("</ul>\n");
125
            html.append("<br>\n");
126
        }
127
        if( !StringUtils.isBlank(functionDescription) ) {
128
            html.append("<b>").append(i18n.getTranslation("_Description")).append("</b><br>\n");
129
            if( !StringUtils.containsAny(functionDescription, "<br>", "<p>", "<br/>")) {
130
                html.append(functionDescription.replace("\n", "<br>")).append("<br>\n");
131
            } else {
132
                html.append(functionDescription).append("<br>\n");
133
            }
134
        }            
135

    
136
        html.append("</html>\n");
137
        return html.toString();
138
    }
139

    
140
}