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 @ 44262

History | View | Annotate | Download (4.68 KB)

1 43939 jjdelcerro
/*
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 43983 jjdelcerro
package org.gvsig.expressionevaluator.swing.impl.elements;
7 43939 jjdelcerro
8 44148 jjdelcerro
import java.util.List;
9 44126 jjdelcerro
import org.apache.commons.lang3.StringUtils;
10 43939 jjdelcerro
import org.gvsig.expressionevaluator.Function;
11 43983 jjdelcerro
import org.gvsig.expressionevaluator.swing.Element.FunctionElement;
12 44191 jjdelcerro
import org.gvsig.expressionevaluator.swing.ExpressionBuilderConfig;
13 44126 jjdelcerro
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingLocator;
14
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingManager;
15
import org.gvsig.expressionevaluator.swing.FunctionAdditionalPanelFactory;
16
import org.gvsig.expressionevaluator.swing.JExpressionBuilder;
17 43983 jjdelcerro
import org.gvsig.expressionevaluator.swing.spi.AbstractElement;
18 44126 jjdelcerro
import org.gvsig.tools.ToolsLocator;
19
import org.gvsig.tools.i18n.I18nManager;
20
import org.gvsig.tools.swing.api.Component;
21 43939 jjdelcerro
22
/**
23
 *
24
 * @author jjdelcerro
25
 */
26 44126 jjdelcerro
public class DefaultFunctionElement
27 43983 jjdelcerro
        extends AbstractElement
28
        implements FunctionElement {
29 44126 jjdelcerro
30 43939 jjdelcerro
    private final Function function;
31
32 44259 jjdelcerro
    public DefaultFunctionElement(Function function) {
33 43989 jjdelcerro
        super(
34 44126 jjdelcerro
                function.name(),
35 44259 jjdelcerro
                function.name(),
36 44126 jjdelcerro
                function.isSQLCompatible()
37
                ? "expressionbuilder-element-function-sql"
38
                : "expressionbuilder-element-function"
39 43989 jjdelcerro
        );
40 43939 jjdelcerro
        this.function = function;
41
    }
42
43 43983 jjdelcerro
    @Override
44 43939 jjdelcerro
    public Function getFunction() {
45
        return this.function;
46
    }
47 44126 jjdelcerro
48
    @Override
49 44191 jjdelcerro
    public boolean isEnabled() {
50 44262 jjdelcerro
        try {
51
            if( this.getConfig().getPreferences().isSQLCompatible() ) {
52
                return this.function.isSQLCompatible();
53
            }
54
        } catch(Exception ex) {
55
56 44191 jjdelcerro
        }
57
        return true;
58
    }
59
60
    @Override
61 44126 jjdelcerro
    public Component getAditionalPanel(JExpressionBuilder expressionBuilder) {
62
        ExpressionEvaluatorSwingManager manager = ExpressionEvaluatorSwingLocator.getManager();
63
        FunctionAdditionalPanelFactory factory = manager.getFunctionAdditionalPanelFactory(this.function.name());
64
        if (factory == null) {
65
            return null;
66
        }
67
        return factory.createAdditionalPanel(expressionBuilder);
68
    }
69
70
    @Override
71 44259 jjdelcerro
    public String getName() {
72
        return this.function.name();
73
    }
74
75
    @Override
76
    public Object getValue() {
77
        return this.function.name();
78
    }
79
80
    @Override
81
    public String getLabel() {
82
        return "<html><b>" + function.name() + "</b> return " + function.returnType() + "</html>";
83
    }
84
85
    @Override
86
    public String getRenderedValue() {
87
        return function.template() == null ? function.name() + "({{}})" : function.template();
88
    }
89
90
    @Override
91 44126 jjdelcerro
    public String getDescription() {
92
        I18nManager i18n = ToolsLocator.getI18nManager();
93
94
        StringBuilder html = new StringBuilder();
95
        html.append("<html>\n");
96
97
        Function theFunction = this.getFunction();
98 44259 jjdelcerro
        html.append("<b>").append(i18n.getTranslation("_Function")).append("</b> ").append(this.getName()).append("<br>\n<br>\n");
99
        List<String> aliases = theFunction.aliases();
100
        if( aliases!=null && !aliases.isEmpty() ) {
101
            html.append("<b>").append(i18n.getTranslation("_Aliases")).append(":</b> ").append("<ul>\n");
102
            for (String alias : aliases) {
103
                html.append("<li>").append(alias).append("</li>\n");
104 44148 jjdelcerro
            }
105 44259 jjdelcerro
            html.append("</ul>\n");
106
        }
107
        html.append("<b>").append(i18n.getTranslation("_Return")).append("</b> ");
108
        html.append(StringUtils.isEmpty(theFunction.returnType()) ? "Objec" : theFunction.returnType());
109
        html.append("<br>\n");
110
        html.append("<b>").append(i18n.getTranslation("_Template")).append("</b> ");
111
        html.append(StringUtils.isEmpty(theFunction.template()) ? this.getName() + "()" : theFunction.template());
112
        html.append("<br>\n");
113 44126 jjdelcerro
114 44259 jjdelcerro
        String[] args = theFunction.descriptionArgs();
115
        if (args != null) {
116
            html.append("<b>").append(i18n.getTranslation("_Arguments")).append(":</b> ").append("<ul>\n");
117
            for (String arg : args) {
118
                html.append("<li>").append(arg).append("</li>\n");
119 44126 jjdelcerro
            }
120 44259 jjdelcerro
            html.append("</ul>\n");
121
            html.append("<br>\n");
122 44126 jjdelcerro
        }
123 44259 jjdelcerro
        String functionDescription = theFunction.description();
124
        if( !StringUtils.isBlank(functionDescription) ) {
125
            html.append("<b>").append(i18n.getTranslation("_Description")).append("</b><br>\n");
126
            html.append(functionDescription.replace("\n", "<br>")).append("<br>\n");
127
        }
128 44126 jjdelcerro
129
        html.append("</html>\n");
130
        return html.toString();
131
    }
132
133 43939 jjdelcerro
}