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 / ViewCaptureRectanglePanel.java @ 44007

History | View | Annotate | Download (5.12 KB)

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

    
3
import java.awt.Image;
4
import java.awt.event.ActionEvent;
5
import java.awt.event.ActionListener;
6
import java.awt.event.ComponentAdapter;
7
import java.awt.event.ComponentEvent;
8
import javax.swing.JComponent;
9
import javax.swing.event.AncestorEvent;
10
import javax.swing.event.AncestorListener;
11
import org.gvsig.andami.IconThemeHelper;
12
import org.gvsig.app.ApplicationLocator;
13
import org.gvsig.app.ApplicationManager;
14
import org.gvsig.app.project.documents.view.ViewDocument;
15
import org.gvsig.app.project.documents.view.ViewManager;
16
import org.gvsig.app.project.documents.view.gui.IView;
17
import org.gvsig.fmap.geom.Geometry;
18
import org.gvsig.fmap.mapcontrol.MapControl;
19
import org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior;
20
import org.gvsig.fmap.mapcontrol.tools.Behavior.RectangleBehavior;
21
import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
22
import org.gvsig.fmap.mapcontrol.tools.Events.EnvelopeEvent;
23
import org.gvsig.fmap.mapcontrol.tools.Listeners.RectangleListener;
24
import org.gvsig.tools.ToolsLocator;
25
import org.gvsig.tools.i18n.I18nManager;
26
import org.gvsig.tools.swing.api.Component;
27
import org.gvsig.tools.swing.api.ToolsSwingLocator;
28
import org.gvsig.tools.swing.api.ToolsSwingManager;
29

    
30
/**
31
 *
32
 * @author jjdelcerro
33
 */
34
@SuppressWarnings("UseSpecificCatch")
35
public class ViewCaptureRectanglePanel extends ViewCaptureRectanglePanelView implements Component {
36
    
37
    private Geometry geometry = null;
38
    private MapControl mapControl = null;
39
    private String previousTool = null;
40
    private Behavior tool = null;
41
    
42
    public ViewCaptureRectanglePanel() {
43
        this.initComponents();
44
    }
45

    
46
    private void initComponents() {
47
        I18nManager i18n = ToolsLocator.getI18nManager();
48
        ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager();
49
        
50
        toolsSwingManager.setDefaultPopupMenu(this.txtBox);
51
        
52
        this.btnToggleCapture.addActionListener(new ActionListener() {
53
            @Override
54
            public void actionPerformed(ActionEvent e) {
55
                doToggleCapture();
56
            }
57
        });
58
        this.tool = new RectangleBehavior(new RectangleListener() {
59
            @Override
60
            public void rectangle(EnvelopeEvent event) throws BehaviorException {
61
                setGeometry(event.getWorldCoordRect().getGeometry());
62
            }
63

    
64
            @Override
65
            public Image getImageCursor() {
66
                return IconThemeHelper.getImage("cursor-select-by-rectangle");
67
            }
68

    
69
            @Override
70
            public boolean cancelDrawing() {
71
                return false;
72
            }
73
        });
74
        this.btnToggleCapture.setText(i18n.getTranslation("_Start_capture"));
75

    
76
        this.addAncestorListener(new AncestorListener() {
77
            @Override
78
            public void ancestorAdded(AncestorEvent event) {
79
            }
80

    
81
            @Override
82
            public void ancestorRemoved(AncestorEvent event) {
83
                doEndCapture();
84
            }
85

    
86
            @Override
87
            public void ancestorMoved(AncestorEvent event) {
88
            }
89
        });
90
        
91
        this.addComponentListener(new ComponentAdapter() {
92
            @Override
93
            public void componentHidden(ComponentEvent e) {
94
                doEndCapture();
95
            }
96
            
97
        });
98
    }
99

    
100
    @Override
101
    public JComponent asJComponent() {
102
        return this;
103
    }
104

    
105
    private void setGeometry(Geometry geom) {
106
        this.geometry = geom;
107
        try {
108
            String wkt = geom.convertToWKT();
109
            this.txtBox.setText(wkt);
110
        } catch (Exception ex) {
111
            this.txtBox.setText("#########");
112
        }
113
        this.txtBox.setCaretPosition(0);
114
    }
115
    
116
    private void doToggleCapture() {
117
        if( this.mapControl == null ) {
118
            doStartCapture();
119
        } else {
120
            doEndCapture();
121
        }
122
    }
123
    
124
    private void doStartCapture() {
125
        I18nManager i18n = ToolsLocator.getI18nManager();
126
        ApplicationManager application = ApplicationLocator.getManager();
127
        ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
128
        if( viewdoc == null ) {
129
            return;
130
        }
131
        this.mapControl = ((IView)(viewdoc.getMainWindow())).getMapControl();
132
        this.previousTool = this.mapControl.getCurrentTool();
133
        this.mapControl.addBehavior("ElementViewPointCaptureTool", this.tool);
134
        this.mapControl.setTool("ElementViewPointCaptureTool");
135
        this.btnToggleCapture.setText(i18n.getTranslation("_End_capture"));
136
        
137
    }
138

    
139
    private void doEndCapture() {
140
        I18nManager i18n = ToolsLocator.getI18nManager();
141
        if( this.mapControl == null ) {
142
            return;
143
        }
144
        this.mapControl.setTool(this.previousTool);
145
        this.mapControl = null;
146
        this.btnToggleCapture.setText(i18n.getTranslation("_Start_capture"));
147
    }
148

    
149
    Geometry getGeometry() {
150
        return this.geometry;
151
    }
152

    
153
    boolean insertAsWKT() {
154
        return this.rdoInsertAsWKT.isSelected();
155
    }
156

    
157
    boolean insertAsGeometry() {
158
        return this.rdoInsertAsGeometry.isSelected();
159
    }
160
    
161
}