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

History | View | Annotate | Download (2.66 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.swing.api.Component;
10

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

    
22
    public ViewCaptureRectangleElement() {
23
        super("Capture rectangle", "Capture a rectangle in the current view","expressionbuilder-element-view-capture-bbox");
24
    }
25

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

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