Statistics
| Revision:

gvsig-raster / org.gvsig.raster.tools / trunk / org.gvsig.raster.tools / org.gvsig.raster.tools.app / org.gvsig.raster.tools.app.basic / src / main / java / org / gvsig / raster / tools / app / basic / tool / clip / ui / ClippingPanel.java @ 1174

History | View | Annotate | Download (7.23 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.tools.app.basic.tool.clip.ui;
23

    
24
import java.awt.BorderLayout;
25
import java.util.Observable;
26
import java.util.Observer;
27

    
28
import javax.swing.BorderFactory;
29
import javax.swing.JPanel;
30
import javax.swing.JTabbedPane;
31

    
32
import org.gvsig.andami.PluginServices;
33
import org.gvsig.fmap.dal.coverage.RasterLocator;
34
import org.gvsig.fmap.dal.coverage.util.RasterUtils;
35
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
36
import org.gvsig.gui.beans.defaultbuttonspanel.DefaultButtonsPanel;
37
import org.gvsig.raster.tools.app.basic.tool.clip.ClippingData;
38
import org.gvsig.raster.tools.app.basic.tool.clip.ui.listener.ClippingPanelListener;
39
import org.gvsig.raster.tools.app.basic.tool.clip.ui.panel.ClippingCoordinatesPanel;
40
import org.gvsig.raster.tools.app.basic.tool.clip.ui.panel.ClippingOptionsPanel;
41
import org.gvsig.raster.tools.app.basic.tool.clip.ui.panel.ClippingResolutionPanel;
42
import org.gvsig.raster.tools.app.basic.tool.clip.ui.panel.ClippingSelectionPanel;
43

    
44
/**
45
 * General panel for clipping. This panel contains a list of panels with the
46
 * clip options. 
47
 * 
48
 * @author Nacho Brodin (nachobrodin@gmail.com)
49
 */
50
public class ClippingPanel extends DefaultButtonsPanel implements Observer {
51
        private static final long         serialVersionUID = 3078196473228467834L;
52

    
53
        private ClippingDialog            clippingDialog       = null;
54

    
55
        private JTabbedPane               jTabbedPane1         = null;
56

    
57
        private ClippingCoordinatesPanel  coordinatesPanel     = null;
58
        private ClippingResolutionPanel   resolutionPanel      = null;
59
        private ClippingSelectionPanel    selectionPanel       = null;
60
        private ClippingOptionsPanel      optionsPanel         = null;
61

    
62
        private ClippingPanelListener     clippingPanelListener = null;
63

    
64
        /**
65
         * Crea un nuevo <code>ClippingPanel</code>
66
         * @param clippingDialog
67
         */
68
        @SuppressWarnings("deprecation")
69
        public ClippingPanel(ClippingDialog clippingDialog) {
70
                super(ButtonsPanel.BUTTONS_ACCEPTCANCELAPPLY);
71
                getButtonsPanel().getButton(ButtonsPanel.BUTTON_ACCEPT).setEnabled(false);
72
                getButtonsPanel().getButton(ButtonsPanel.BUTTON_APPLY).setEnabled(false);
73

    
74
                this.clippingDialog = clippingDialog;
75

    
76
                initialize();
77
        }
78
        
79
        /**
80
         * Asigna el gestor de eventos y a?ade los listener a los controles
81
         * que lo necesiten 
82
         * @param list
83
         */
84
        public void setClippingListener(ClippingPanelListener list) {
85
                this.clippingPanelListener = list;
86
                addListeners(clippingPanelListener);
87
                getCoordinatesPanel().setClippingListener(clippingPanelListener);
88
        }
89
        
90
        /**
91
         * Gets the listener
92
         * @return
93
         */
94
        public ClippingPanelListener getListener() {
95
                return clippingPanelListener;
96
        }
97
        
98
        /**
99
         * A?ade listeners a los controles que lo necesitan
100
         * @param list
101
         */
102
        private void addListeners(ClippingPanelListener list) {
103
                getResolutionPanel().getCCellSize().addValueChangedListener(list);
104
                getResolutionPanel().getCWidth().addValueChangedListener(list);
105
                getResolutionPanel().getCHeight().addValueChangedListener(list);
106
                getResolutionPanel().getButtonRestore().addActionListener(list);
107
                addButtonPressedListener(list);
108
        }
109
                
110
        /**
111
         * Obtener el <code>ClippingDialog</code> asociado a este objeto.
112
         * @return ClippingDialog
113
         */
114
        public ClippingDialog getClippingDialog() {
115
                return clippingDialog;
116
        }
117

    
118
        /**
119
         * This method initializes this
120
         */
121
        private void initialize() {
122
                JPanel jPanel = null;
123
                jTabbedPane1 = new JTabbedPane();
124
                
125
                jTabbedPane1.addTab(PluginServices.getText(this, "coordenadas_recorte"), getCoordinatesPanel());
126
                jTabbedPane1.addTab(PluginServices.getText(this, "resolucion_espacial"), getResolutionPanel());
127
                jTabbedPane1.addTab(PluginServices.getText(this, "seleccion_bandas"), getSelectionPanel());
128
                jTabbedPane1.addTab(PluginServices.getText(this, "otras_opciones"), getOptionsPanel());
129

    
130
                setLayout(new BorderLayout());
131
                add(jTabbedPane1, BorderLayout.CENTER);
132
        }
133
        
134
        public void removeTab(JPanel panel) {
135
                jTabbedPane1.remove(panel);                        
136
        }
137

    
138
        public ClippingCoordinatesPanel getCoordinatesPanel() {
139
                if (coordinatesPanel == null) {
140
                        coordinatesPanel = new ClippingCoordinatesPanel();
141
                }
142
                return coordinatesPanel;
143
        }
144
        
145
        /**
146
         * This method initializes jPanel
147
         *
148
         * @return javax.swing.JPanel
149
         */
150
        public ClippingResolutionPanel getResolutionPanel() {
151
                if (resolutionPanel == null) {
152
                        resolutionPanel = new ClippingResolutionPanel();
153
                        resolutionPanel.validate();
154
                }
155
                return resolutionPanel;
156
        }
157

    
158
        /**
159
         * This method initializes jPanel1
160
         *
161
         * @return javax.swing.JPanel
162
         */
163
        public ClippingSelectionPanel getSelectionPanel() {
164
                if (selectionPanel == null) {
165
                        selectionPanel = new ClippingSelectionPanel();
166
                }
167
                return selectionPanel;
168
        }
169

    
170
        /**
171
         * This method initializes jOptions
172
         *
173
         * @return javax.swing.JPanel
174
         */
175
        public ClippingOptionsPanel getOptionsPanel() {
176
                if (optionsPanel == null) {
177
                        optionsPanel = new ClippingOptionsPanel();
178
                }
179
                return optionsPanel;
180
        }
181

    
182
        double textWidth, textHeight;
183
        
184
        /**
185
         * Almacena el estado actual del ancho y alto para poder restaurarlo
186
         * si lo necesitamos.
187
         */
188
        public void saveStatus(ClippingData data) {
189
                textWidth = data.getPxWidth();
190
                textHeight = data.getPxHeight();
191
        }
192

    
193
        /**
194
         * Restaura el estado almacenado por saveStatus
195
         */
196
        public void restoreStatus(ClippingData data) {
197
                data.setPxWidth(textWidth);
198
                data.setPxHeight(textHeight);
199
                data.updateObservers();
200
        }
201

    
202
        /**
203
         * Actualiza los valores de los paneles cuando los datos de ClippingData varian
204
         * @param o 
205
         * @param arg
206
         */
207
        public void update(Observable o, Object arg) {
208
                if(!(o instanceof ClippingData))
209
                        return;
210
                ClippingData data = (ClippingData)o;
211
                
212
                clippingPanelListener.setEnableValueChangedEvent(false);
213
                getResolutionPanel().setWidthText(Math.round(data.getPxWidth()), 0);
214
                getResolutionPanel().setHeightText(Math.round(data.getPxHeight()), 0);
215
                RasterUtils util = RasterLocator.getManager().getRasterUtils();
216
                getCoordinatesPanel().setCoordReal(util.getCoord(data.getUlxWc(), data.getUlyWc(), data.getLrxWc(), data.getLryWc(), ClippingData.DEC));
217
                getCoordinatesPanel().setCoordPixel(util.getCoord(data.getUlxPx(), data.getUlyPx(), data.getLrxPx(), data.getLryPx(), ClippingData.DEC));
218
                getResolutionPanel().setCellSizeText(data.getCellSize(), ClippingData.DEC);
219
                clippingPanelListener.setEnableValueChangedEvent(true);
220
        }
221
}