Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extRasterTools-SE / src / org / gvsig / rastertools / clipping / ui / ClippingPanel.java @ 30938

History | View | Annotate | Download (7.09 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.clipping.ui;
20

    
21
import java.awt.BorderLayout;
22
import java.util.Observable;
23
import java.util.Observer;
24

    
25
import javax.swing.BorderFactory;
26
import javax.swing.JPanel;
27
import javax.swing.JTabbedPane;
28

    
29
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
30
import org.gvsig.gui.beans.defaultbuttonspanel.DefaultButtonsPanel;
31
import org.gvsig.raster.util.RasterUtilities;
32
import org.gvsig.rastertools.clipping.ClippingData;
33
import org.gvsig.rastertools.clipping.panels.ClippingCoordinatesPanel;
34
import org.gvsig.rastertools.clipping.panels.ClippingOptionsPanel;
35
import org.gvsig.rastertools.clipping.panels.ClippingResolutionPanel;
36
import org.gvsig.rastertools.clipping.panels.ClippingSelectionPanel;
37
import org.gvsig.rastertools.clipping.ui.listener.ClippingPanelListener;
38

    
39
import com.iver.andami.PluginServices;
40
/**
41
 * <code>ClippingPanel</code>. Interfaz de usuario para el recorte de rasters.
42
 *
43
 * @version 17/04/2007
44
 * @author BorSanZa - Borja S?nchez Zamorano (borja.sanchez@iver.es)
45
 */
46
public class ClippingPanel extends DefaultButtonsPanel implements Observer {
47
        private static final long         serialVersionUID = 3078196473228467834L;
48

    
49
        private ClippingDialog            clippingDialog       = null;
50

    
51
        private JTabbedPane               jTabbedPane1         = null;
52

    
53
        private ClippingCoordinatesPanel  coordinatesPanel     = null;
54
        private ClippingResolutionPanel   resolutionPanel      = null;
55
        private ClippingSelectionPanel    selectionPanel       = null;
56
        private ClippingOptionsPanel      optionsPanel         = null;
57

    
58
        private ClippingPanelListener     clippingPanelListener = null;
59

    
60
        /**
61
         * Crea un nuevo <code>ClippingPanel</code>
62
         * @param clippingDialog
63
         */
64
        public ClippingPanel(ClippingDialog clippingDialog) {
65
                super(ButtonsPanel.BUTTONS_ACCEPTCANCELAPPLY);
66
                getButtonsPanel().getButton(ButtonsPanel.BUTTON_ACCEPT).setEnabled(false);
67
                getButtonsPanel().getButton(ButtonsPanel.BUTTON_APPLY).setEnabled(false);
68

    
69
                this.clippingDialog = clippingDialog;
70

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

    
105
        /**
106
         * This method initializes this
107
         */
108
        private void initialize() {
109
                JPanel jPanel = null;
110
                jTabbedPane1 = new JTabbedPane();
111
                
112
                jTabbedPane1.addTab(PluginServices.getText(this, "coordenadas_recorte"), getCoordinatesPanel());
113

    
114
                jPanel = new JPanel();
115
                jPanel.setLayout(new BorderLayout());
116
                jPanel.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8));
117
                jPanel.add(getResolutionPanel());
118
                jTabbedPane1.addTab(PluginServices.getText(this, "resolucion_espacial"), jPanel);
119

    
120
                jTabbedPane1.addTab(PluginServices.getText(this, "seleccion_bandas"), getSelectionPanel());
121

    
122
                jPanel = new JPanel();
123
                jPanel.setLayout(new BorderLayout());
124
                jPanel.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8));
125
                jPanel.add(getOptionsPanel());
126
                jTabbedPane1.addTab(PluginServices.getText(this, "otras_opciones"), jPanel);
127

    
128
                setLayout(new BorderLayout());
129
                add(jTabbedPane1, BorderLayout.CENTER);
130
        }
131

    
132
        public ClippingCoordinatesPanel getCoordinatesPanel() {
133
                if (coordinatesPanel == null) {
134
                        coordinatesPanel = new ClippingCoordinatesPanel();
135
                }
136
                return coordinatesPanel;
137
        }
138
        
139
        /**
140
         * This method initializes jPanel
141
         *
142
         * @return javax.swing.JPanel
143
         */
144
        public ClippingResolutionPanel getResolutionPanel() {
145
                if (resolutionPanel == null) {
146
                        resolutionPanel = new ClippingResolutionPanel();
147
                        resolutionPanel.validate();
148
                }
149
                return resolutionPanel;
150
        }
151

    
152
        /**
153
         * This method initializes jPanel1
154
         *
155
         * @return javax.swing.JPanel
156
         */
157
        public ClippingSelectionPanel getSelectionPanel() {
158
                if (selectionPanel == null) {
159
                        selectionPanel = new ClippingSelectionPanel();
160
                }
161
                return selectionPanel;
162
        }
163

    
164
        /**
165
         * This method initializes jOptions
166
         *
167
         * @return javax.swing.JPanel
168
         */
169
        public ClippingOptionsPanel getOptionsPanel() {
170
                if (optionsPanel == null) {
171
                        optionsPanel = new ClippingOptionsPanel();
172
                }
173
                return optionsPanel;
174
        }
175

    
176
        double textWidth, textHeight;
177
        
178
        /**
179
         * Almacena el estado actual del ancho y alto para poder restaurarlo
180
         * si lo necesitamos.
181
         */
182
        public void saveStatus(ClippingData data) {
183
                textWidth = data.getPxWidth();
184
                textHeight = data.getPxHeight();
185
        }
186

    
187
        /**
188
         * Restaura el estado almacenado por saveStatus
189
         */
190
        public void restoreStatus(ClippingData data) {
191
                data.setPxWidth(textWidth);
192
                data.setPxHeight(textHeight);
193
                data.updateObservers();
194
        }
195

    
196
        /**
197
         * Actualiza los valores de los paneles cuando los datos de ClippingData varian
198
         * @param o 
199
         * @param arg
200
         */
201
        public void update(Observable o, Object arg) {
202
                if(!(o instanceof ClippingData))
203
                        return;
204
                ClippingData data = (ClippingData)o;
205
                
206
                clippingPanelListener.setEnableValueChangedEvent(false);
207
                getResolutionPanel().setWidthText(Math.round(data.getPxWidth()), 0);
208
                getResolutionPanel().setHeightText(Math.round(data.getPxHeight()), 0);
209
                getCoordinatesPanel().setCoordReal(RasterUtilities.getCoord(data.getUlxWc(), data.getUlyWc(), data.getLrxWc(), data.getLryWc(), ClippingData.DEC));
210
                getCoordinatesPanel().setCoordPixel(RasterUtilities.getCoord(data.getPxMinX(), data.getPxMinY(), data.getPxMaxX(), data.getPxMaxY(), ClippingData.DEC));
211
                getResolutionPanel().setCellSizeText(data.getCellSize(), ClippingData.DEC);
212
                clippingPanelListener.setEnableValueChangedEvent(true);
213
        }
214
}