Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.app / org.gvsig.app.mainplugin / src / main / java / org / gvsig / app / project / documents / view / expressionevaluator / ViewCapturePointElement.java @ 44173

History | View | Annotate | Download (3.21 KB)

1
package org.gvsig.app.project.documents.view.expressionevaluator;
2

    
3
import java.awt.Dialog;
4
import java.awt.Window;
5
import org.gvsig.app.ApplicationLocator;
6
import org.gvsig.app.ApplicationManager;
7
import org.gvsig.expressionevaluator.ExpressionBuilder;
8
import org.gvsig.expressionevaluator.ExpressionBuilder.Config;
9
import org.gvsig.expressionevaluator.ExpressionBuilder.GeometrySupportType;
10
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
11
import org.gvsig.expressionevaluator.swing.Element.CalculatedElement;
12
import org.gvsig.expressionevaluator.swing.Element.SimpleElement;
13
import org.gvsig.expressionevaluator.swing.JExpressionBuilder;
14
import org.gvsig.expressionevaluator.swing.spi.AbstractElement;
15
import org.gvsig.fmap.geom.Geometry;
16
import org.gvsig.tools.ToolsLocator;
17
import org.gvsig.tools.swing.api.Component;
18

    
19
/**
20
 *
21
 * @author jjdelcerro
22
 */
23
@SuppressWarnings("UseSpecificCatch")
24
public class ViewCapturePointElement
25
        extends AbstractElement
26
        implements SimpleElement, CalculatedElement {
27

    
28
    private ViewCapturePointPanel aditionalPanel;
29

    
30
    public ViewCapturePointElement() {
31
        super(
32
                ToolsLocator.getI18nManager().getTranslation("_Capture_point"),
33
                "expressionbuilder-element-view-capture-point"
34
        );
35
    }
36

    
37
    @Override
38
    public Object getValue() {
39
        if (this.aditionalPanel == null) {
40
            return null;
41
        }
42
        try {
43
            Geometry geom = this.aditionalPanel.getGeometry();
44
            if (geom == null) {
45
                return null;
46
            }
47
            ExpressionBuilder builder = ExpressionEvaluatorLocator.getManager().createExpressionBuilder();
48
            if (this.aditionalPanel.insertAsWKT()) {
49
                if (this.aditionalPanel.insertAsGeometry()) {
50
                    builder.getConfig().set(
51
                            Config.geometry_type_support,
52
                            GeometrySupportType.WKT
53
                    );
54
                    return builder.geometry(geom, geom.getProjection()).toString();
55
                } else {
56
                    String wkt = geom.convertToWKT();
57
                    return "'" + wkt + "'";
58
                }
59
            } else {
60
                if (this.aditionalPanel.insertAsGeometry()) {
61
                    builder.getConfig().set(
62
                            Config.geometry_type_support,
63
                            GeometrySupportType.WKB
64
                    );
65
                    return builder.geometry(geom, geom.getProjection()).toString();
66
                } else {
67
                    byte[] wkb = geom.convertToWKB();
68
                    return builder.bytearray_hex(wkb);
69
                }
70
            }
71
        } catch (Exception ex) {
72
            LOGGER.warn("Can't get point value.", ex);
73
            return null;
74
        }
75
    }
76

    
77
    @Override
78
    public Component getAditionalPanel(JExpressionBuilder expressionBuilder) {
79
        if (aditionalPanel == null) {
80
            this.aditionalPanel = new ViewCapturePointPanel();
81
        }
82
        return this.aditionalPanel;
83
    }
84

    
85
    @Override
86
    public boolean isEnabled() {
87
        ApplicationManager application = ApplicationLocator.getManager();
88
        return ! application.getUIManager().isModalDialogShowing();
89
    }
90
}