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

History | View | Annotate | Download (3.16 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.ExpressionEvaluatorLocator;
9
import org.gvsig.expressionevaluator.swing.Element.CalculatedElement;
10
import org.gvsig.expressionevaluator.swing.Element.SimpleElement;
11
import org.gvsig.expressionevaluator.swing.JExpressionBuilder;
12
import org.gvsig.expressionevaluator.swing.spi.AbstractElement;
13
import org.gvsig.fmap.geom.Geometry;
14
import org.gvsig.tools.ToolsLocator;
15
import org.gvsig.tools.swing.api.Component;
16

    
17
/**
18
 *
19
 * @author jjdelcerro
20
 */
21
@SuppressWarnings("UseSpecificCatch")
22
public class ViewCaptureRectangleElement 
23
        extends AbstractElement
24
        implements SimpleElement, CalculatedElement
25
{
26
    private ViewCaptureRectanglePanel aditionalPanel;
27

    
28
    public ViewCaptureRectangleElement() {
29
        super(
30
                ToolsLocator.getI18nManager().getTranslation("_Capture_rectangle"), 
31
                "expressionbuilder-element-view-capture-bbox"
32
        );
33
    }
34

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

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

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

    
89
}