Statistics
| Revision:

gvsig-raster / org.gvsig.raster / trunk / org.gvsig.raster / org.gvsig.raster.swing / org.gvsig.raster.swing.impl / src / main / java / org / gvsig / raster / swing / impl / preview / SinglePreviewPanel.java @ 1317

History | View | Annotate | Download (6.33 KB)

1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
* 
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
* 
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
* 
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
* MA  02110-1301, USA.
20
* 
21
*/
22
package org.gvsig.raster.swing.impl.preview;
23

    
24
import java.awt.BorderLayout;
25
import java.awt.Color;
26
import java.awt.Dimension;
27
import java.awt.geom.Rectangle2D;
28

    
29
import javax.swing.BorderFactory;
30
import javax.swing.JPanel;
31
import javax.swing.JTabbedPane;
32
import javax.swing.border.TitledBorder;
33

    
34
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
35
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
36
import org.gvsig.gui.beans.imagenavigator.IClientImageNavigator;
37
import org.gvsig.gui.beans.imagenavigator.ImageNavigator;
38
import org.gvsig.i18n.Messages;
39
import org.gvsig.raster.swing.preview.DataSourcePreview;
40
import org.gvsig.raster.swing.preview.PreviewPanel;
41
import org.gvsig.raster.swing.preview.PreviewRenderProcess;
42
/**
43
 * Single preview with fixed size to insert in a major panel.
44
 * 
45
 * 19/02/2008
46
 * @author Nacho Brodin nachobrodin@gmail.com
47
 */
48
public class SinglePreviewPanel extends JPanel implements PreviewPanel {
49
        private static final long serialVersionUID = 6028780107787443656L;
50
        private ImageNavigator        imageNavigator        = null;
51
        private DataSourcePreview     fLayer                = null;
52
        private PreviewRenderProcess  renderProcess         = null;
53
        private JPanel                jPanelPreview         = null;
54
        private PreviewRequestManager previewRequestManager =  null;
55

    
56
        /**
57
         * Construir un nuevo PreviewBasePanel
58
         * @param renderProcess. Clase para procesar el raster antes del dibujado
59
         * @param lyr. Capa raster a mostrar en la previsualizaci?n
60
         */
61
        public SinglePreviewPanel( 
62
                        PreviewRenderProcess renderProcess,
63
                        DataSourcePreview lyr) {
64
                this.renderProcess = renderProcess;
65
                setLayer(lyr);
66
                initialize();
67
        }
68
        
69
        /**
70
         * Construir un nuevo PreviewBasePanel
71
         * @param renderProcess. Clase para procesar el raster antes del dibujado
72
         * @param lyr. Capa raster a mostrar en la previsualizaci?n
73
         */
74
        public SinglePreviewPanel( 
75
                        PreviewRenderProcess renderProcess) {
76
                this.renderProcess = renderProcess;
77
                initialize();
78
        }
79

    
80
        /**
81
         * Inicializa los componentes gr?ficos
82
         */
83
        private void initialize() {
84
                setLayout(new BorderLayout(8, 8));
85
                add(getPanelPreview(), BorderLayout.CENTER);
86
        }
87
        
88
        /**
89
         * Cierra la capa abierta para previsualizaci?n
90
         */
91
        public void closePreviewLayer() {
92
                previewRequestManager.closePreviewLayer();
93
        }
94
        
95
        /**
96
         * Obtiene el objeto IClientImageNavigator
97
         * @return
98
         */
99
        public IClientImageNavigator getPreviewManager() {
100
                return previewRequestManager;
101
        }
102

    
103
        /*
104
         * (non-Javadoc)
105
         * @see org.gvsig.raster.swing.preview.PreviewPanel#getImageNavigator()
106
         */
107
        public ImageNavigator getImageNavigator() {
108
                if (imageNavigator == null) {
109
                        imageNavigator = new ImageNavigator(getPreviewManager());
110
                        imageNavigator.setFocusable(true);
111
                        imageNavigator.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
112
                }
113
                return imageNavigator;
114
        }
115

    
116
        /**
117
         * Obtiene el panel con el componente con la vista previa
118
         * @return JPanel
119
         */
120
        public JPanel getPanelPreview() {
121
                if (jPanelPreview == null) {
122
                        jPanelPreview = new JPanel();
123
                        JPanel jsubpanel2 = new JPanel();
124
                        jPanelPreview.setBorder(BorderFactory.createTitledBorder(null, Messages.getText("vista_previa"), TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
125
                        jPanelPreview.setLayout(new BorderLayout());
126
                        jsubpanel2.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8));
127
                        jsubpanel2.setLayout(new BorderLayout());
128

    
129
                        jsubpanel2.add(getImageNavigator(), BorderLayout.CENTER);
130
                        jPanelPreview.add(jsubpanel2, BorderLayout.CENTER);
131

    
132
                        jPanelPreview.setPreferredSize(new Dimension(237, 237));
133
                        jPanelPreview.setMinimumSize(new Dimension(237, 237));
134
                        jPanelPreview.setMaximumSize(new Dimension(237, 237));
135
                }
136
                return jPanelPreview;
137
        }
138

    
139
        
140
        /**
141
         * Especificar la capa para la previsualizaci?n
142
         * @param layer
143
         */
144
        public void setLayer(DataSourcePreview fLayer) {
145
                this.fLayer = fLayer;
146
                previewRequestManager = new PreviewRequestManager(renderProcess, fLayer);
147

    
148
                previewInitializeSizes();
149
        }
150
        
151
        public void previewInitializeSizes() {
152
                // Util para ejecutar el test sin una capa de prueba
153
                if (fLayer == null)
154
                        return;
155

    
156
                // Especificar las dimensiones de la capa en la vista previa
157
                Rectangle2D extent2 = fLayer.getBBoxRectangle();
158
                getImageNavigator().setViewDimensions(extent2.getMinX(), extent2.getMaxY(), extent2.getMaxX(), extent2.getMinY());
159
                getImageNavigator().setZoom(1.0/ fLayer.getCellSize());
160
                getImageNavigator().setAutoAdjusted();
161
        }
162

    
163
        /**
164
         * Especificar el layer para el recorte
165
         * @param layer
166
         */
167
        public DataSourcePreview getLayer() {
168
                return fLayer;
169
        }
170
        
171
        /*
172
         * (non-Javadoc)
173
         * @see org.gvsig.raster.swing.preview.PreviewPanel#setPreviewSize(java.awt.Dimension)
174
         */
175
        public void setPreviewSize(Dimension dimension) {
176
                getPanelPreview().setPreferredSize(dimension);
177
                getPanelPreview().setMinimumSize(dimension);
178
                getPanelPreview().setMaximumSize(dimension);
179
        }
180
        
181
        /*
182
         * (non-Javadoc)
183
         * @see org.gvsig.raster.swing.preview.PreviewPanel#refreshPreview()
184
         */
185
        public void refreshPreview() {
186
                if (fLayer == null)
187
                        return;
188
                getImageNavigator().updateBuffer();
189
        }
190

    
191
        /*
192
         * (non-Javadoc)
193
         * @see org.gvsig.raster.swing.preview.PreviewPanel#getDataSourcePreview()
194
         */
195
        public DataSourcePreview getDataSourcePreview() {
196
                return fLayer;
197
        }
198

    
199
        public void addButtonPressedListener(ButtonsPanelListener listener) {
200
                // TODO Auto-generated method stub
201
                
202
        }
203

    
204
        public ButtonsPanel getButtonsPanel() {
205
                // TODO Auto-generated method stub
206
                return null;
207
        }
208

    
209
        public JTabbedPane getTabbedPane() {
210
                // TODO Auto-generated method stub
211
                return null;
212
        }
213
}