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

History | View | Annotate | Download (2.72 KB)

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

    
3
import org.gvsig.expressionevaluator.ExpressionBuilder;
4
import org.gvsig.expressionevaluator.ExpressionBuilder.Config;
5
import org.gvsig.expressionevaluator.ExpressionBuilder.GeometrySupportType;
6
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
7
import org.gvsig.expressionevaluator.swing.Element.CalculatedElement;
8
import org.gvsig.expressionevaluator.swing.Element.SimpleElement;
9
import org.gvsig.expressionevaluator.swing.spi.AbstractElement;
10
import org.gvsig.fmap.geom.Geometry;
11
import org.gvsig.tools.swing.api.Component;
12

    
13
/**
14
 *
15
 * @author jjdelcerro
16
 */
17
    @SuppressWarnings("UseSpecificCatch")
18
public class ViewCapturePointElement
19
        extends AbstractElement
20
        implements SimpleElement, CalculatedElement 
21
    {
22
    private ViewCapturePointPanel aditionalPanel;
23

    
24
    public ViewCapturePointElement() {
25
        super("Capture point", "Capture a point in the current view", "expressionbuilder-element-view-capture-point");
26
    }
27

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

    
68
    @Override
69
    public Component getAditionalPanel() {
70
        if (aditionalPanel == null) {
71
            this.aditionalPanel = new ViewCapturePointPanel();
72
        }
73
        return this.aditionalPanel;
74
    }
75

    
76
}