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 / ViewCaptureRectangleElement.java @ 44012

History | View | Annotate | Download (2.8 KB)

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

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

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

    
23
    public ViewCaptureRectangleElement() {
24
        super(
25
                ToolsLocator.getI18nManager().getTranslation("_Capture_rectangle"), 
26
                "Capture a rectangle in the current view",
27
                "expressionbuilder-element-view-capture-bbox"
28
        );
29
    }
30

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

    
71
    @Override
72
    public Component getAditionalPanel() {
73
        if (aditionalPanel == null) {
74
            this.aditionalPanel = new ViewCaptureRectanglePanel();
75
        }
76
        return this.aditionalPanel;
77
    }
78
}