Revision 17937

View differences:

trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/georeferencing/ui/zoom/ZoomRecord.java
1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 */
19
package org.gvsig.rastertools.georeferencing.ui.zoom;
20

  
21
import java.util.ArrayList;
22

  
23
/**
24
 * Historial de peticiones para poder recuperar las anteriores a 
25
 * la actual.
26
 * 
27
 * 11/01/2008
28
 * @author Nacho Brodin (nachobrodin@gmail.com)
29
 */
30
public class ZoomRecord {
31

  
32
	private ArrayList  record = new ArrayList();
33
	private int        pos = -1;
34

  
35
	/**
36
	 * Asigna la petici?n siguiente
37
	 * @param request
38
	 */
39
	public void setRequest(Object request) {
40
		record.add(++ pos, request);
41
	}
42
	
43
	/**
44
	 * Obtiene la petici?n anterior
45
	 * @return
46
	 */
47
	public Object getRequest() {
48
		if(pos > 0) {
49
			return record.get(pos --);
50
		} else if(pos == 0)
51
			return record.get(pos);
52
		return null;
53
	}
54
	
55
	/**
56
	 * Vacia el historial
57
	 */
58
	public void clear() {
59
		record.clear();
60
	}
61
}
trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/georeferencing/ui/zoom/ZoomControl.java
87 87
	private JButton 				 bPrevZoom = null;
88 88
	private double                   stepScale = 2;
89 89
	private IExtensionRequest        extReq = null;
90
	private ZoomRecord               zoomRecord = null;
90 91
			
91 92
	/**
92 93
	 * Constructor. Crea el panel y asigna el lado donde se crear?n los botones
......
362 363
	public void setExtensionRequest(IExtensionRequest er) {
363 364
		this.extReq = er;
364 365
	}
366
	
367
	/**
368
	 * Obtiene el historico de zooms
369
	 * @return ZoomRecord
370
	 */
371
	public ZoomRecord getZoomRecord() {
372
		if(zoomRecord == null) {
373
			zoomRecord = new ZoomRecord();
374
			zoomRecord.setRequest(new Integer(FULL_VIEW));
375
		}
376
		return zoomRecord;
377
	}
365 378

  
366 379
	/**
367 380
	 * Eventos de los botones zoom m?s y zoom menos.
......
381 394
			double width = 0, height = 0;
382 395
			canvas.setZoom(1);
383 396
			if(e.getSource() == bFullView) {
397
				getZoomRecord().setRequest(new Integer(FULL_VIEW));
384 398
				extReq.fullExtent(new Dimension(canvas.getVisibleRect().width, canvas.getVisibleRect().height));
385 399
				return;
386 400
			}
387 401
			if(e.getSource() == bPrevZoom) {
388
				extReq.fullExtent(new Dimension(canvas.getVisibleRect().width, canvas.getVisibleRect().height));
402
				Object request = getZoomRecord().getRequest();
403
				if(request != null) {
404
					if(request instanceof Rectangle2D)
405
						extReq.request((Rectangle2D)request);
406
					if(request instanceof Integer && ((Integer)request).intValue() == FULL_VIEW)
407
						extReq.fullExtent(new Dimension(canvas.getVisibleRect().width, canvas.getVisibleRect().height));
408
				}
389 409
				return;
390 410
			}
391 411
			if(e.getSource() == bZoomMas) {
......
398 418
			}
399 419
			double x = canvas.getCenter().getX() - (width / 2);
400 420
			double y = canvas.getCenter().getY() - (height / 2);
401
			extReq.request(new Rectangle2D.Double(x, y, width, height));
421
			Rectangle2D request = new Rectangle2D.Double(x, y, width, height);
422
			getZoomRecord().setRequest(request);
423
			extReq.request(request);
402 424
		}
403 425
	}
404 426

  

Also available in: Unified diff