Revision 41964

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/pom.xml
10 10
        <groupId>org.gvsig</groupId>
11 11
        <artifactId>org.gvsig.desktop</artifactId>
12 12
        <version>2.0.79-SNAPSHOT</version>
13
    </parent>
13
    </parent>    
14
    
15
    <properties>
16
        <gvsig.package.info.state>testing</gvsig.package.info.state>
17
    </properties>
14 18

  
15

  
16 19
    <modules>
17 20
      <module>org.gvsig.app</module>
18 21
      <module>org.gvsig.coreplugin.app</module>
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/gui/DefaultViewPanel.java
448 448
            new PolygonBehavior(poligSel)});
449 449

  
450 450
		// Zoom por rect?ngulo
451
		ZoomOutRightButtonListener zoil =
452
            new ZoomOutRightButtonListener(m_MapControl);
453 451
		ZoomInListener zil = new ZoomInListener(m_MapControl);
454 452
		m_MapControl.addBehavior("zoomIn", new Behavior[] {
455
				new RectangleBehavior(zil), new PointBehavior(zoil)});
456

  
457
		/*
458
		SelectImageListener sil = new SelectImageListener(m_MapControl);
459
		m_MapControl.addBehavior("selectImage", new Behavior[] {
460
            new PointBehavior(sil), new MouseMovementBehavior(sbl) });
461
        */
462

  
463
		m_MapControl.setTool("zoomIn"); // Por defecto
453
				new RectangleBehavior(zil), new PointBehavior(zol,PointBehavior.RIGHT)});
454
		
455
                
456
                
457
                m_MapControl.setTool("zoomIn");
458
                
459
                
464 460
        m_MapControl.addCombinedBehavior(new MouseMovementBehavior(sbl));
465 461
        m_MapControl.addCombinedBehavior(new MouseWheelBehavior());
466
        m_MapControl.addCombinedBehavior(new MoveWithMiddleButtonBehavior(pl));
462
        m_MapControl.addCombinedBehavior(new MoveBehavior(pl,MoveBehavior.MIDDLE));
467 463
	}
468 464

  
469 465
	public void windowActivated() {
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.fmap.control/src/main/java/org/gvsig/fmap/mapcontrol/tools/ZoomOutRightButtonListener.java
32 32
import org.gvsig.fmap.geom.GeometryLocator;
33 33
import org.gvsig.fmap.geom.GeometryManager;
34 34
import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
35
import org.gvsig.fmap.geom.primitive.Envelope;
36 35
import org.gvsig.fmap.mapcontext.MapContext;
37 36
import org.gvsig.fmap.mapcontext.ViewPort;
38 37
import org.gvsig.fmap.mapcontrol.MapControl;
......
44 43

  
45 44

  
46 45
/**
47
 * <p>Listener for doing a <i>zoom out</i> operation on the extent of the <code>ViewPort</code> of the associated {@link MapControl MapControl}
48
 *  object, selecting a point of the <code>MapControl</code> by a single click of the third button of the mouse.</p>
49
 *
50
 * <p>Calculates the new extent <i>r</i> with this equations:
51
 *  <code><br>
52
 *   ViewPort vp = mapControl.getMapContext().getViewPort();<br>
53
 *   Point2D p2 = vp.toMapPoint(event.getPoint());<br>
54
 *   double factor = 1/MapContext.ZOOMOUTFACTOR;<br>
55
 *   Rectangle2D.Double r = new Rectangle2D.Double();<br>
56
 *   double nuevoX = p2.getX() - ((vp.getExtent().getWidth() * factor) / 2.0);<br>
57
 *   double nuevoY = p2.getY() - ((vp.getExtent().getHeight() * factor) / 2.0);<br>
58
 *   r.x = nuevoX;<br>
59
 *   r.y = nuevoY;<br>
60
 *   r.width = vp.getExtent().getWidth() * factor;<br>
61
 *   r.height = vp.getExtent().getHeight() * factor;<br>
62
 *   vp.setExtent(r);
63
 *  </code>
64
 * </p>
65
 *
66
 * <p>The ultimately extent will be an adaptation from that, calculated by the <code>ViewPort</code>
67
 *  bearing in mind the ratio of the available rectangle.</p>
68
 *
69
 * @see MapContext#ZOOMOUTFACTOR
70
 * @see ViewPort#setEnvelope(Envelope)
71
 * @see ZoomInListenerImpl
72
 * @see ZoomOutListenerImpl
73
 *
74
 * @author Vicente Caballero Navarro
46
 * @deprecated use ZoomOutListenerImpl setting mouseButton to right in the Behavior.
75 47
 */
76 48
public class ZoomOutRightButtonListener implements PointListener {
77 49
	private static final GeometryManager geomManager = GeometryLocator.getGeometryManager();
78 50
	private static final Logger logger = LoggerFactory.getLogger(ZoomOutRightButtonListener.class);
79
	
51
		
80 52
	/**
81
	 * The image to display when the cursor is active.
82
	 */
83
//	private final Image izoomout = PluginServices.getIconTheme().get("cursor-zoom-out").getImage();
84
	
85
	/**
86 53
	 * Reference to the <code>MapControl</code> object that uses.
87 54
	 */
88 55
	private MapControl mapControl;
......
94 61
	 */
95 62
	public ZoomOutRightButtonListener(MapControl mapControl) {
96 63
		this.mapControl = mapControl;
64
                logger.warn("Using deprecated class ZoomOutRightButtonListener");
97 65
	}
98 66

  
99 67
	/*
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.fmap.control/src/main/java/org/gvsig/fmap/mapcontrol/tools/Behavior/PointBehavior.java
57 57
 	 *
58 58
	 * @param l listener used to permit this object to work with the associated <code>MapControl</code>
59 59
	 */
60
	public PointBehavior(PointListener l, int mouseButton) {
61
            super(mouseButton);
62
            listener = l;
63
	}
64

  
60 65
	public PointBehavior(PointListener l) {
61
		listener = l;
66
            this(l,LEFT);
62 67
	}
63 68

  
64 69
	/*
......
66 71
	 * @see com.iver.cit.gvsig.fmap.tools.Behavior.Behavior#mousePressed(java.awt.event.MouseEvent)
67 72
	 */
68 73
	public void mousePressed(MouseEvent e) {
74
                if( !isMyButton(e) ) {
75
                    return;
76
                }
69 77
		if (listener.cancelDrawing()) {
70 78
			getMapControl().cancelDrawing();
71 79
		}
......
79 87
	 * @see com.iver.cit.gvsig.fmap.tools.Behavior.Behavior#mouseReleased(java.awt.event.MouseEvent)
80 88
	 */
81 89
	public void mouseReleased(MouseEvent e) throws BehaviorException {
90
                if( !isMyButton(e) ) {
91
                    return;
92
                }
82 93
		PointEvent event = new PointEvent(e.getPoint(), e, this.getMapControl());
83 94
		listener.point(event);
84 95
		if (doubleClick){
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.fmap.control/src/main/java/org/gvsig/fmap/mapcontrol/tools/Behavior/MoveWithMiddleButtonBehavior.java
22 22
 */
23 23
package org.gvsig.fmap.mapcontrol.tools.Behavior;
24 24

  
25
import java.awt.event.MouseEvent;
26 25

  
27
import javax.swing.SwingUtilities;
28

  
29 26
import org.gvsig.fmap.mapcontrol.tools.Listeners.PanListener;
30 27

  
31 28
/**
......
44 41
     *            associated <code>MapControl</code>
45 42
     */
46 43
    public MoveWithMiddleButtonBehavior(PanListener pli) {
47
        super(pli);
44
        super(pli,MIDDLE);
48 45
    }
49 46

  
50
    protected boolean isMyButton(MouseEvent e) {
51
        return (SwingUtilities.isMiddleMouseButton(e));
52
    }
53 47

  
54 48
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.fmap.control/src/main/java/org/gvsig/fmap/mapcontrol/tools/Behavior/Behavior.java
21 21
 * For any additional information, do not hesitate to contact us
22 22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23 23
 */
24
/*
25
 * Created on 28-oct-2004
26
 */
27
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
28
 *
29
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
30
 *
31
 * This program is free software; you can redistribute it and/or
32
 * modify it under the terms of the GNU General Public License
33
 * as published by the Free Software Foundation; either version 2
34
 * of the License, or (at your option) any later version.
35
 *
36
 * This program is distributed in the hope that it will be useful,
37
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
38
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
39
 * GNU General Public License for more details.
40
 *
41
 * You should have received a copy of the GNU General Public License
42
 * along with this program; if not, write to the Free Software
43
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
44
 *
45
 * For more information, contact:
46
 *
47
 *  Generalitat Valenciana
48
 *   Conselleria d'Infraestructures i Transport
49
 *   Av. Blasco Ib??ez, 50
50
 *   46010 VALENCIA
51
 *   SPAIN
52
 *
53
 *      +34 963862235
54
 *   gvsig@gva.es
55
 *      www.gvsig.gva.es
56
 *
57
 *    or
58
 *
59
 *   IVER T.I. S.A
60
 *   Salamanca 50
61
 *   46005 Valencia
62
 *   Spain
63
 *
64
 *   +34 963163400
65
 *   dac@iver.es
66
 */
67 24
package org.gvsig.fmap.mapcontrol.tools.Behavior;
68 25

  
69 26
import java.awt.Image;
......
71 28
import java.awt.event.MouseWheelEvent;
72 29
import java.awt.geom.Point2D;
73 30
import java.awt.image.BufferedImage;
31
import javax.swing.SwingUtilities;
74 32

  
75 33
import org.gvsig.fmap.dal.feature.exception.CreateGeometryException;
76 34
import org.gvsig.fmap.geom.Geometry.SUBTYPES;
......
106 64
 * @author Luis W. Sevilla
107 65
 */
108 66
public abstract class Behavior implements IBehavior {
67
        public static final int LEFT = 0;
68
        public static final int MIDDLE = 1;
69
        public static final int RIGHT = 2;
70
        
109 71
	/**
110 72
	 * Reference to the <code>MapControl</code> object that uses.
111 73
	 *
......
118 80

  
119 81
	protected GeometryManager geomManager = GeometryLocator.getGeometryManager();
120 82
	
83
        private int mouseButton = LEFT;
84
        
85
        public Behavior() {
86
            
87
        }
88
        
89
        public Behavior(int mouseButton) {
90
            this.mouseButton = mouseButton;
91
        }
92
        
121 93
	/*
122 94
	 * (non-Javadoc)
123 95
	 * @see com.iver.cit.gvsig.fmap.tools.Behavior.IBehavior#getListener()
......
365 337
		}
366 338
		return curve;
367 339
	}
340
        
341
        
342
        protected boolean isMyButton(MouseEvent e) {
343
            switch(this.mouseButton) {
344
                case LEFT:
345
                default:
346
                    return (SwingUtilities.isLeftMouseButton(e));
347
                case MIDDLE:
348
                    return (SwingUtilities.isMiddleMouseButton(e));
349
                case RIGHT:
350
                    return (SwingUtilities.isRightMouseButton(e));                   
351
            }
352
        }
368 353
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.fmap.control/src/main/java/org/gvsig/fmap/mapcontrol/tools/Behavior/MoveBehavior.java
73 73
     *            listener used to permit this object to work with the
74 74
     *            associated <code>MapControl</code>
75 75
     */
76
    public MoveBehavior(PanListener pli) {
76
    public MoveBehavior(PanListener pli, int mouseButton) {
77
        super(mouseButton);
77 78
        listener = pli;
78 79
    }
80
    
81
    public MoveBehavior(PanListener pli) {
82
        this(pli,LEFT);
83
    }
79 84

  
80 85
    public void paintComponent(MapControlDrawer renderer) {
81 86
        BufferedImage image = getMapControl().getImage();
......
126 131
        }
127 132
    }
128 133

  
129
    protected boolean isMyButton(MouseEvent e) {
130
        return (e.getButton() == MouseEvent.BUTTON1);
131
    }
132

  
133 134
    /**
134 135
     * <p>
135 136
     * Sets a tool listener to work with the <code>MapControl</code> using this
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.fmap.control/src/main/java/org/gvsig/fmap/mapcontrol/tools/ZoomOutListenerImpl.java
103 103
	 * @see com.iver.cit.gvsig.fmap.tools.Listeners.PointListener#point(com.iver.cit.gvsig.fmap.tools.Events.PointEvent)
104 104
	 */
105 105
	public void point(PointEvent event) {
106
		ViewPort vp = mapControl.getMapContext().getViewPort();
107
		Point2D p2 = vp.toMapPoint(event.getPoint());
106
            ViewPort vp = mapControl.getMapContext().getViewPort();
107
            Point2D p2 = vp.toMapPoint(event.getPoint());
108 108

  
109
		double nuevoX;
110
		double nuevoY;
111
		double factor = 1/MapContext.ZOOMOUTFACTOR;
109
            double nuevoX;
110
            double nuevoY;
111
            double factor = 1 / MapContext.ZOOMOUTFACTOR;
112
            if (vp.getExtent() != null) {
113
                nuevoX = p2.getX() - ((vp.getExtent().getWidth() * factor) / 2.0);
114
                nuevoY = p2.getY() - ((vp.getExtent().getHeight() * factor) / 2.0);
115
                double x = nuevoX;
116
                double y = nuevoY;
117
                double width = vp.getExtent().getWidth() * factor;
118
                double height = vp.getExtent().getHeight() * factor;
112 119

  
113
		nuevoX = p2.getX() - ((vp.getExtent().getWidth() * factor) / 2.0);
114
		nuevoY = p2.getY() - ((vp.getExtent().getHeight() * factor) / 2.0);
115
		double x = nuevoX;
116
		double y = nuevoY;
117
		double width = vp.getExtent().getWidth() * factor;
118
		double height = vp.getExtent().getHeight() * factor;
120
                try {
121
                    vp.setEnvelope(geomManager.createEnvelope(x, y, x + width, y + height, SUBTYPES.GEOM2D));
122
                } catch (CreateEnvelopeException e) {
123
                    logger.warn("Error creating the envelope", e);
124
                }
125
            }
119 126

  
120
		Envelope r;
121
		try {
122
			r = geomManager.createEnvelope(x,y, x+width, y+height, SUBTYPES.GEOM2D);
123
			vp.setEnvelope(r);
124
		} catch (CreateEnvelopeException e) {
125
			logger.error("Error creating the envelope", e);
126
		}		
127 127
	}
128 128

  
129 129
	/*

Also available in: Unified diff