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

History | View | Annotate | Download (5.71 KB)

1
package org.gvsig.app.project.documents.view.expressionevaluator.viewcapturerectangle;
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.addAncestorListener(new AncestorListener() {
75
            @Override
76
            public void ancestorAdded(AncestorEvent event) {
77
            }
78

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

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

    
109
    @Override
110
    public JComponent asJComponent() {
111
        return this;
112
    }
113

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

    
148
    private void doEndCapture() {
149
        I18nManager i18n = ToolsLocator.getI18nManager();
150
        if( this.mapControl == null ) {
151
            return;
152
        }
153
        this.mapControl.setTool(this.previousTool);
154
        this.mapControl = null;
155
        this.btnToggleCapture.setText(i18n.getTranslation("_Start_capture"));
156
    }
157

    
158
    Geometry getGeometry() {
159
        return this.geometry;
160
    }
161

    
162
    boolean insertAsWKT() {
163
        return this.rdoInsertAsWKT.isSelected();
164
    }
165

    
166
    boolean insertAsGeometry() {
167
        return this.rdoInsertAsGeometry.isSelected();
168
    }
169
    
170
}