Statistics
| Revision:

root / trunk / extensions / extRasterTools-SE / src / org / gvsig / rastertools / georeferencing / ui / zoom / ControlsPanel.java @ 17727

History | View | Annotate | Download (5.79 KB)

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.awt.GridBagConstraints;
22
import java.awt.GridBagLayout;
23
import java.awt.geom.Point2D;
24
import java.awt.geom.Rectangle2D;
25
import java.awt.image.BufferedImage;
26

    
27
import javax.swing.JPanel;
28

    
29
import com.iver.andami.PluginServices;
30
import com.iver.andami.ui.mdiManager.IWindow;
31
import com.iver.andami.ui.mdiManager.WindowInfo;
32

    
33
/**
34
 * Panel que contiene los controles de zoom para el mapa
35
 * y para el raster a georreferenciar.
36
 * 
37
 * 22/12/2007
38
 * @author Nacho Brodin (nachobrodin@gmail.com)
39
 */
40
public class ControlsPanel extends JPanel implements IWindow {
41
        private static final long         serialVersionUID = 1L;
42
        private ZoomControl               zoomMapControl = null;
43
        private ZoomControl               zoomPixelControl = null;
44
        private CenterPointGraphicLayer   mapGraphicLayer = null;
45
        private CenterPointGraphicLayer   pixelGraphicLayer = null;
46
        
47
        private int                       w = 640;
48
        private int                       h = 100; 
49
        private int                       posX = 0;
50
        private int                       posY = 0;
51
        
52
        /**
53
         * Constructor.
54
         * Crea la composici?n de controles de zoom.
55
         */
56
        public ControlsPanel(int posX, int posY, int w, int h) {
57
                setPosition(posX, posY);
58
                setWindowsSize(w, h);
59
                init();
60
        }
61
        
62
        /**
63
         * Asigna la posici?n de la ventana
64
         * @param posX Posici?n en X
65
         * @param posY Posici?n en Y
66
         */
67
        public void setPosition(int posX, int posY) {
68
                this.posX = posX;
69
                this.posY = posY;
70
        }
71
        
72
        /**
73
         * Asigna la posici?n de la ventana
74
         * @param posX Posici?n en X
75
         * @param posY Posici?n en Y
76
         */
77
        public void setWindowsSize(int w, int h) {
78
                this.w = w;
79
                this.h = h;
80
        }
81
        
82
        /**
83
         * Inicializaci?n de los componentes gr?ficos
84
         */
85
        private void init() {
86
                setLayout(new GridBagLayout());
87
                setPreferredSize(new java.awt.Dimension(w, h)); 
88
                
89
                GridBagConstraints gb = new GridBagConstraints();
90
                gb.insets = new java.awt.Insets(0, 0, 0, 0);
91
                gb.gridy = 0;
92
                gb.gridx = 0;
93
                gb.weightx = 1D; //El espacio sobrante se distribuye horizontalmente
94
                gb.weighty = 1D; //El espacio sobrante se distribuye verticalmente
95
                gb.fill = GridBagConstraints.BOTH; //El componente se hace tan ancho como espacio disponible tiene
96
                gb.anchor = GridBagConstraints.NORTH; //Alineamos las cajas arriba
97
                add(getZoomMapControl(), gb);
98
                
99
                gb.gridx = 1;
100
                add(getZoomPixelControl(), gb);
101
        }
102
        
103
        /**
104
         * Obtiene el panel de control de zoom de coordenadas de mapa
105
         * @return
106
         */
107
        public ZoomControl getZoomMapControl() {
108
                if(zoomMapControl == null)
109
                        zoomMapControl = new ZoomControl(ZoomControl.RIGHT_CONTROL);
110
                return zoomMapControl;
111
        }
112

    
113
        /**
114
         * Obtiene el panel de control de zoom de coordenadas pixel
115
         * @return
116
         */
117
        public ZoomControl getZoomPixelControl() {
118
                if(zoomPixelControl == null)
119
                        zoomPixelControl = new ZoomControl(ZoomControl.LEFT_CONTROL);
120
                return zoomPixelControl;
121
        }
122
        
123
        /**
124
         * Obtiene el panel de control de zoom de coordenadas de mapa
125
         * @return
126
         */
127
        public CenterPointGraphicLayer getMapGraphicLayer() {
128
                if(mapGraphicLayer == null) {
129
                        mapGraphicLayer = new CenterPointGraphicLayer(GPGraphic.MAP, getZoomMapControl());
130
                        mapGraphicLayer.setShowNumber(false);
131
                        mapGraphicLayer.setShowLabel(false);
132
                        getZoomMapControl().setGraphicLayer(mapGraphicLayer);
133
                }
134
                return mapGraphicLayer;
135
        }
136

    
137
        /**
138
         * Obtiene el panel de control de zoom de coordenadas pixel
139
         * @return
140
         */
141
        public CenterPointGraphicLayer getPixelGraphicLayer() {
142
                if(pixelGraphicLayer == null)
143
                        pixelGraphicLayer = new CenterPointGraphicLayer(GPGraphic.PIXEL, getZoomPixelControl());
144
                return pixelGraphicLayer;
145
        }
146
        
147
        /**
148
         * Asigna los par?metros de dibujado para el mapa
149
         * @param img Buffer con un ?rea de datos
150
         * @param ext Rectangle2D del ?rea de datos dada 
151
         * @param pixelSize Tama?o de pixel
152
         * @param center Punto del ?rea de datos donde se quiere centrar el dibujado del buffer
153
         */
154
        public void setMapDrawParams(BufferedImage img, Rectangle2D ext, double pixelSize, Point2D center) {
155
                getZoomMapControl().setDrawParams(img, ext, pixelSize, center) ;
156
        }
157
        
158
        /**
159
         * Asigna los par?metros de dibujado para el raster
160
         * @param img Buffer con un ?rea de datos
161
         * @param ext Rectangle2D del ?rea de datos dada 
162
         * @param pixelSize Tama?o de pixel
163
         * @param center Punto del ?rea de datos donde se quiere centrar el dibujado del buffer
164
         */
165
        public void setPixelDrawParams(BufferedImage img, Rectangle2D ext, double pixelSize, Point2D center) {
166
                getZoomPixelControl().setDrawParams(img, ext, pixelSize, center) ;
167
        }
168

    
169
        /*
170
         * (non-Javadoc)
171
         * @see com.iver.andami.ui.mdiManager.IWindow#getWindowInfo()
172
         */
173
        public WindowInfo getWindowInfo() {
174
                WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODELESSDIALOG | WindowInfo.RESIZABLE);
175
                //if (getClippingPanel().getFLayer() != null)
176
                        //m_viewinfo.setAdditionalInfo(getClippingPanel().getFLayer().getName());
177
                m_viewinfo.setTitle(PluginServices.getText(this, "zooms_control"));
178
                m_viewinfo.setX(posX);
179
                m_viewinfo.setY(posY);
180
                m_viewinfo.setHeight(h);
181
                m_viewinfo.setWidth(w);
182
                return m_viewinfo;
183
        }
184
}