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 | } |