Statistics
| Revision:

svn-gvsig-desktop / trunk / applications / appgvSIG / src / com / iver / cit / gvsig / project / documents / view / toolListeners / MapOverviewChangeZoomListener.java @ 15957

History | View | Annotate | Download (3.84 KB)

1 7771 caballero
/**
2 9439 caballero
 *
3 7771 caballero
 */
4
package com.iver.cit.gvsig.project.documents.view.toolListeners;
5
6
import java.awt.Cursor;
7
import java.awt.Image;
8
import java.awt.Point;
9
import java.awt.Toolkit;
10
import java.awt.event.InputEvent;
11
import java.awt.event.MouseEvent;
12
import java.awt.geom.Rectangle2D;
13
14
import javax.swing.ImageIcon;
15
16 14821 jmvivo
import com.iver.andami.PluginServices;
17 7771 caballero
import com.iver.cit.gvsig.fmap.MapControl;
18
import com.iver.cit.gvsig.fmap.ViewPort;
19
import com.iver.cit.gvsig.fmap.tools.BehaviorException;
20
import com.iver.cit.gvsig.fmap.tools.Events.MoveEvent;
21
import com.iver.cit.gvsig.fmap.tools.Events.RectangleEvent;
22
import com.iver.cit.gvsig.fmap.tools.Listeners.PanListener;
23
import com.iver.cit.gvsig.fmap.tools.Listeners.RectangleListener;
24
import com.iver.cit.gvsig.project.documents.view.MapOverview;
25
26
/**
27
 * @author jmvivo
28
 *
29
 */
30
31
32
33
public class MapOverviewChangeZoomListener implements RectangleListener, PanListener {
34 14821 jmvivo
        private final Image izoomin = PluginServices.getIconTheme()
35
                .get("cursor-zoom-in").getImage();
36
37 7771 caballero
        private Cursor cur = Toolkit.getDefaultToolkit().createCustomCursor(izoomin,new Point(16, 16), "");
38
        protected MapControl mapControl;
39 9439 caballero
40 7771 caballero
        /**
41
         * Crea un nuevo MapOverviewChangeZoomListener.
42
         *
43
         * @param mapControl Control de mapa asociado
44
         */
45
        public MapOverviewChangeZoomListener(MapControl mapControl) {
46
                this.mapControl=mapControl;
47
        }
48 9439 caballero
49 7771 caballero
        /**
50
         * Cambia el zoom. Es llamado cuando finaliza de
51
         * pintar el recuadro
52
         *
53
         *
54 9439 caballero
         *
55
         * @see com.iver.cit.gvsig.fmap.tools.Listeners.RectangleListener#rectangle(com.iver.cit.gvsig.fmap.tools.Events.RectangleEvent)
56 7771 caballero
         */
57
        public void rectangle(RectangleEvent event) throws BehaviorException {
58 9439 caballero
59 7771 caballero
                if (!checkModifiers(event.getEvent())){
60
                        return;
61
                }
62
                MapOverview mov=(MapOverview) this.mapControl;
63
                ViewPort vpView=mov.getAssociatedMapContext().getViewPort();
64
                ViewPort vp = mov.getViewPort();
65 9439 caballero
66 7771 caballero
                if (vp.getExtent() != null && vpView.getExtent() != null) {
67 9439 caballero
68 7771 caballero
                        // Recuperamos las coordenadas del evento en px
69
                        Rectangle2D pxRectangle = event.getPixelCoordRect();
70
                        // Recuperamos las coordenadas del evento en coordenadas de la vista de localizador
71 9439 caballero
                        Rectangle2D realRectangle = event.getWorldCoordRect();
72
73 7771 caballero
                        if ((pxRectangle.getWidth() < 3) && (pxRectangle.getHeight() < 3))
74
                        {
75
                                // rectangulo < 3 px no hacemos nada
76
                                return;
77 9439 caballero
78 7771 caballero
                        } else {
79
                                // Cambiamos la extension de la vista asociada al localizador
80 9439 caballero
                                vpView.setExtent(realRectangle);
81 12214 jcampos
                                mov.getAssociatedMapContext().invalidate();
82
                                vpView.setExtent(realRectangle);
83 7771 caballero
                        }
84 9439 caballero
85 7771 caballero
                }
86
87
88
        }
89
90 9439 caballero
        /**
91 7771 caballero
         * (non-Javadoc)
92
         * @see com.iver.cit.gvsig.fmap.tools.Listeners.ToolListener#getCursor()
93
         **/
94
        public Cursor getCursor() {
95
                return this.cur;
96
        }
97
98
        /* (non-Javadoc)
99
         * @see com.iver.cit.gvsig.fmap.tools.Listeners.ToolListener#cancelDrawing()
100
         */
101 9439 caballero
        public boolean cancelDrawing() {
102 7771 caballero
                return true; //???
103
        }
104 9439 caballero
105
        /**
106
         * Es llamado mientras se hace del 'Dragg' del
107 7771 caballero
         * raton. Pinta el recuadro de la forma.
108
         **/
109
        public void move(MoveEvent event) throws BehaviorException {
110 9439 caballero
111
112 7771 caballero
                if (!checkModifiers(event.getEvent())){
113
                        return;
114
                }
115
                System.out.println("mapOvervierChangeZoom");
116
                MapOverview mov=(MapOverview) this.mapControl;
117
                ViewPort vpView=mov.getAssociatedMapContext().getViewPort();
118 9439 caballero
                ViewPort vp = mov.getViewPort();
119
120 7771 caballero
                if (vp.getExtent() != null && vpView.getExtent() != null) {
121
122
                        // Creamos un recuadro con las coordenadas del raton
123
                        // traducidas a la del mapa
124 9439 caballero
                        Rectangle2D realRectangle = new Rectangle2D.Double();
125
                        realRectangle.setFrameFromDiagonal(vp.toMapPoint(event.getFrom()),vp.toMapPoint(event.getTo()));
126
127 7771 caballero
                        // Establecemos la forma
128
                        mov.refreshOverView(realRectangle);
129
                }
130 9439 caballero
131
132
133 7771 caballero
        }
134 9439 caballero
135
        /**
136 7771 caballero
         * Comprueba que el estado de los botones
137
         * sea el deseado para esta herramienta.
138
         **/
139 9439 caballero
        private boolean checkModifiers(MouseEvent event) {
140 7771 caballero
                int modifiers = event.getModifiers();
141
                int keyPressedMask = InputEvent.BUTTON1_MASK;
142
                return ((modifiers & keyPressedMask) == keyPressedMask);
143
        }
144 9439 caballero
145 7771 caballero
}