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 / viewcapturepoint / ViewCapturePointPanel.java @ 44190

History | View | Annotate | Download (5.86 KB)

1
package org.gvsig.app.project.documents.view.expressionevaluator.viewcapturepoint;
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.PointBehavior;
21
import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
22
import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent;
23
import org.gvsig.fmap.mapcontrol.tools.Listeners.PointListener;
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 ViewCapturePointPanel extends ViewCapturePointPanelView 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 ViewCapturePointPanel() {
43
        this.initComponents();
44
    }
45

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

    
64
            @Override
65
            public void pointDoubleClick(PointEvent event) throws BehaviorException {
66
                setGeometry(event.getMapPoint());
67
            }
68

    
69
            @Override
70
            public Image getImageCursor() {
71
                return IconThemeHelper.getImage("cursor-select-by-point");
72
            }
73

    
74
            @Override
75
            public boolean cancelDrawing() {
76
                return false;
77
            }
78
        });
79
        this.addAncestorListener(new AncestorListener() {
80
            @Override
81
            public void ancestorAdded(AncestorEvent event) {
82
            }
83

    
84
            @Override
85
            public void ancestorRemoved(AncestorEvent event) {
86
                doEndCapture();
87
            }
88

    
89
            @Override
90
            public void ancestorMoved(AncestorEvent event) {
91
            }
92
        });
93
        this.addComponentListener(new ComponentAdapter() {
94
            @Override
95
            public void componentHidden(ComponentEvent e) {
96
                doEndCapture();
97
            }
98
            
99
        });
100
        
101
        toolsSwingManager.translate(this.lblConstantPoint);
102
        toolsSwingManager.translate(this.lblValue);
103
        toolsSwingManager.translate(this.lblDescription);
104
        toolsSwingManager.translate(this.lblCaptureAPointFromCurrentView);
105
        toolsSwingManager.translate(this.lblUseWktOrWkb);
106
        toolsSwingManager.translate(this.lblUseGeometryOrText);
107
        toolsSwingManager.translate(this.rdoInsertAsGeometry);
108
        toolsSwingManager.translate(this.rdoInsertAsString);
109
        toolsSwingManager.translate(this.rdoInsertAsWKB);
110
        toolsSwingManager.translate(this.rdoInsertAsWKT);
111
        toolsSwingManager.translate(this.btnToggleCapture);
112
        
113
    }
114

    
115
    @Override
116
    public JComponent asJComponent() {
117
        return this;
118
    }
119

    
120
    private void setGeometry(Geometry geom) {
121
        this.geometry = geom;
122
        try {
123
            String wkt = geom.convertToWKT();
124
            this.txtGeometry.setText(wkt);
125
        } catch (Exception ex) {
126
            this.txtGeometry.setText("#########");
127
        }
128
        this.txtGeometry.setCaretPosition(0);
129
    }
130
    
131
    private void doToggleCapture() {
132
        if( this.mapControl == null ) {
133
            doStartCapture();
134
        } else {
135
            doEndCapture();
136
        }
137
    }
138
    
139
    private void doStartCapture() {
140
        I18nManager i18n = ToolsLocator.getI18nManager();
141
        ApplicationManager application = ApplicationLocator.getManager();
142
        ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
143
        if( viewdoc == null ) {
144
            return;
145
        }
146
        this.mapControl = ((IView)(viewdoc.getMainWindow())).getMapControl();
147
        this.previousTool = this.mapControl.getCurrentTool();
148
        this.mapControl.addBehavior("ElementViewPointCaptureTool", this.tool);
149
        this.mapControl.setTool("ElementViewPointCaptureTool");
150
        this.btnToggleCapture.setText(i18n.getTranslation("_End_capture"));
151
        
152
    }
153

    
154
    private void doEndCapture() {
155
        I18nManager i18n = ToolsLocator.getI18nManager();
156
        if( this.mapControl == null ) {
157
            return;
158
        }
159
        this.mapControl.setTool(this.previousTool);
160
        this.mapControl = null;
161
        this.btnToggleCapture.setText(i18n.getTranslation("_Start_capture"));
162
    }
163

    
164
    Geometry getGeometry() {
165
        return this.geometry;
166
    }
167

    
168
    boolean insertAsWKT() {
169
        return this.rdoInsertAsWKT.isSelected();
170
    }
171

    
172
    boolean insertAsGeometry() {
173
        return this.rdoInsertAsGeometry.isSelected();
174
    }
175
    
176
}