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

History | View | Annotate | Download (4.37 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.isSQLCompatible()
35
                ? "expressionbuilder-element-function-sql"
36
                : "expressionbuilder-element-function"
37
        );
38
        this.function = function;
39
    }
40

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

    
46
    @Override
47
    public Component getAditionalPanel(JExpressionBuilder expressionBuilder) {
48
        ExpressionEvaluatorSwingManager manager = ExpressionEvaluatorSwingLocator.getManager();
49
        FunctionAdditionalPanelFactory factory = manager.getFunctionAdditionalPanelFactory(this.function.name());
50
        if (factory == null) {
51
            return null;
52
        }
53
        return factory.createAdditionalPanel(expressionBuilder);
54
    }
55

    
56
    @Override
57
    public String getDescription() {
58
        I18nManager i18n = ToolsLocator.getI18nManager();
59

    
60
        StringBuilder html = new StringBuilder();
61
        html.append("<html>\n");
62

    
63
        Function theFunction = this.getFunction();
64
        if (theFunction == null) {
65
            html.append("<b>").append(i18n.getTranslation("_Function")).append("</b> ").append(this.getName()).append("<br>\n<br>\n");
66
            html.append("<b>").append(i18n.getTranslation("_Return")).append("</b> Object<br>\n<br>\n");
67
            html.append("<b>").append(i18n.getTranslation("_Template")).append(":</b> ").append(this.getName()).append("()<br>\n");
68
        } else {
69
            html.append("<b>").append(i18n.getTranslation("_Function")).append("</b> ").append(this.getName()).append("<br>\n<br>\n");
70
            List<String> aliases = theFunction.aliases();
71
            if( aliases!=null && !aliases.isEmpty() ) {
72
                html.append("<b>").append(i18n.getTranslation("_Aliases")).append(":</b> ").append("<ul>\n");
73
                for (String alias : aliases) {
74
                    html.append("<li>").append(alias).append("</li>\n");
75
                }
76
                html.append("</ul>\n");
77
            }
78
            html.append("<b>").append(i18n.getTranslation("_Return")).append("</b> ");
79
            html.append(StringUtils.isEmpty(theFunction.returnType()) ? "Objec" : theFunction.returnType());
80
            html.append("<br>\n");
81
            html.append("<b>").append(i18n.getTranslation("_Template")).append("</b> ");
82
            html.append(StringUtils.isEmpty(theFunction.template()) ? this.getName() + "()" : theFunction.template());
83
            html.append("<br>\n");
84

    
85
            String[] args = theFunction.descriptionArgs();
86
            if (args != null) {
87
                html.append("<b>").append(i18n.getTranslation("_Arguments")).append(":</b> ").append("<ul>\n");
88
                for (String arg : args) {
89
                    html.append("<li>").append(arg).append("</li>\n");
90
                }
91
                html.append("</ul>\n");
92
                html.append("<br>\n");
93
            }
94
            String functionDescription = theFunction.description();
95
            if( !StringUtils.isBlank(functionDescription) ) {
96
                html.append("<b>").append(i18n.getTranslation("_Description")).append("</b><br>\n");
97
                html.append(functionDescription.replace("\n", "<br>")).append("<br>\n");
98
            }            
99
        }
100

    
101
        html.append("</html>\n");
102
        return html.toString();
103
    }
104

    
105
}