Statistics
| Revision:

root / trunk / extensions / extRasterTools / src / com / iver / cit / gvsig / rasterTools / saveRaster / pruebas2 / SaveRasterDefaultPanel.java @ 4446

History | View | Annotate | Download (7.89 KB)

1
/*
2
 * Cresques Mapping Suite. Graphic Library for constructing mapping applications.
3
 *
4
 * Copyright (C) 2004-5.
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., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
19
 *
20
 * For more information, contact:
21
 *
22
 * cresques@gmail.com
23
 */
24
package com.iver.cit.gvsig.rasterTools.saveRaster.pruebas2;
25

    
26
import java.awt.Container;
27
import java.awt.Dimension;
28
import java.awt.event.ActionEvent;
29
import java.awt.geom.Rectangle2D;
30

    
31
import javax.swing.JPanel;
32

    
33
import org.cresques.cts.IProjection;
34
import org.cresques.io.GeoRasterWriter;
35
import org.cresques.ui.DefaultDialogPanel;
36

    
37
import com.iver.andami.PluginServices;
38
import com.iver.andami.ui.mdiManager.View;
39
import com.iver.andami.ui.mdiManager.ViewInfo;
40
import com.iver.cit.gvsig.fmap.MapControl;
41
import com.iver.cit.gvsig.fmap.layers.FLayers;
42
import com.iver.cit.gvsig.rasterTools.saveRaster.DriverProperties;
43
import com.iver.cit.gvsig.rasterTools.saveRaster.gui.DataInputSaveRaster;
44
import com.iver.cit.gvsig.rasterTools.saveRaster.gui.ProgressSaveRasterDialog;
45
import com.iver.cit.gvsig.rasterTools.saveRaster.gui.SaveRasterDialogPanel;
46
import com.iver.cit.gvsig.rasterTools.saveRaster.pruebas3.SaveRasterPropsDialog;
47
import com.iver.cit.gvsig.rasterTools.saveRaster.gui.toolListeners.DataInputSaveListener;
48

    
49

    
50
/**
51
 * Panel que contiene los botones de Aceptar, Cancelar y Aplicar heredando de
52
 * DefaultDialogPanel. Dentro de este estar? el panel con los controles de
53
 * salvar a raster.
54
 * @author Nacho Brodin (brodin_ign@gva.es)
55
 */
56
public class SaveRasterDefaultPanel extends DefaultDialogPanel implements View {
57
    final private static long                         serialVersionUID = -3370601314380922368L;
58
    private DataInputSaveListener                listener =  null;
59
    private GeoRasterWriter                                writer=null;
60
        private IProjection                                 currentProjection = null;
61
        private SaveRasterPropsDialog                 frameSaveRasterProps = null;
62
        private int                                                 compresion = 1;
63
        private int                                                 sizeBlock = 64;
64
        public DriverProperties                                driverProps = null;
65
        private FLayers                                                 layers = null;
66
        private MapControl                                        mapCtrl = null;
67

    
68
        /**
69
         * Constructor de la ventana de dialogo para gvSIG.
70
         */
71
        public SaveRasterDefaultPanel(FLayers layers, MapControl mapCtrl) {
72
                super();
73
                driverProps = new DriverProperties();
74
                this.layers = layers;
75
                this.mapCtrl = mapCtrl;
76
                init();
77
        }
78
        
79
        /**
80
         * Constructor generico para poder visualizar la ventana desde
81
         * una funci?n main.
82
         */
83
    public SaveRasterDefaultPanel() {
84
        super(false);
85
        init();
86
    }
87

    
88
    /**
89
     * Inicializaci?n del panel.
90
     * @return void
91
     */
92
    public void init() {
93
            super.initialize();
94
             
95
        //Ocultamos el bot?n de aplicar
96
        this.setLocation(new java.awt.Point(0,0));
97
        this.getApplyButton().setVisible(false);
98
        
99
        setName("saveRaster");
100
                
101
                 this.getAcceptButton().setEnabled(false);
102
                 this.getAcceptButton().addActionListener(new java.awt.event.ActionListener() {
103
            public void actionPerformed(java.awt.event.ActionEvent evt) {
104
                    acceptButtonActionPerformed(evt);
105
                closeJDialog();
106
            }
107
        });
108
                 this.getCancelButton().addActionListener(new java.awt.event.ActionListener() {
109
            public void actionPerformed(java.awt.event.ActionEvent evt) {
110
                closeJDialog();
111
            }
112
        });
113
                 this.getApplyButton().addActionListener(new java.awt.event.ActionListener() {
114
            public void actionPerformed(java.awt.event.ActionEvent evt) {
115
                    acceptButtonActionPerformed(evt);
116
             }
117
        });
118
                
119
                //Captura de eventos para el bot?n de propiedades
120
                
121
                ((DataInputSaveRaster)this.getContentPanel()).getBPropiedades().addActionListener(new java.awt.event.ActionListener() {
122
            public void actionPerformed(java.awt.event.ActionEvent evt) {
123
                    propsButtonActionPerformed(evt);
124
             }
125
        });
126
                
127
    }
128

    
129
    /**
130
     * Cierra esta ventana a trav?s de andami 
131
     */
132
    public void closeJDialog() {
133
                this.hide();
134
                for(int i=0;i<layers.getLayersCount();i++){
135
                        layers.getLayer(i).getFMap().invalidate();
136
                }
137
                PluginServices.getMDIManager().closeView(SaveRasterDefaultPanel.this);
138
        }
139
    
140
    private void propsButtonActionPerformed(ActionEvent e){
141
                DataInputSaveRaster dialog = (DataInputSaveRaster)((SaveRasterDialogPanel)this.getContentPane()).getContentPanel();
142
                String name = ((SaveRasterDialogPanel)this.getContentPane()).getListener().getFileName();
143
                
144
                //Si no se ha seleccionado ning?n fichero salimos
145
                if(name == null || name.equals(""))
146
                        return;
147
        
148
                GeoRasterWriter writer = GeoRasterWriter.getWriter(name);
149
                String ext = name.toLowerCase().substring(name.lastIndexOf(".") + 1);
150
                if(driverProps.getProperties(ext)!=null)
151
                        writer.setProps(driverProps.getProperties(ext));
152
                
153
                frameSaveRasterProps = new SaveRasterPropsDialog(writer);
154
                frameSaveRasterProps.setParentDialog(this);
155
                frameSaveRasterProps.show();
156
        }
157
        
158
        /**
159
         * 
160
         * @param e
161
         */
162
    private void acceptButtonActionPerformed(ActionEvent e) {
163
            DataInputSaveRaster dialog = (DataInputSaveRaster)((SaveRasterDialogPanel)this.getContentPane()).getContentPanel();
164
                        
165
                String fName = ((SaveRasterDialogPanel)this.getContentPane()).getListener().getFileName();
166
                Dimension dimension = new Dimension(Integer.parseInt(dialog.getTancho().getText()), 
167
                                                                                        Integer.parseInt(dialog.getTalto().getText()));
168
                
169
                double lrX = Double.parseDouble(dialog.getTinf_derX().getText());
170
                double lrY = Double.parseDouble(dialog.getTinf_derY().getText());
171
                double ulX = Double.parseDouble(dialog.getTsup_izqX().getText());
172
                double ulY = Double.parseDouble(dialog.getTsup_izqY().getText());
173
                double width = 0;
174
                if(ulX>lrX)width = (double)(ulX-lrX);
175
                        else width = (double)(lrX-ulX);
176
                double height = 0;
177
                if(ulY>lrY)height = (double)(ulY-lrY);
178
                        else height = (double)(lrY-ulY);
179
                Rectangle2D ext = null;
180
                
181
                if(ulY<lrY)
182
                        ext = new Rectangle2D.Double(ulX, ulY, width, height);
183
                else
184
                        ext = new Rectangle2D.Double(ulX, lrY, width, height);
185
                
186
                ProgressSaveRasterDialog progressBar = 
187
                        new ProgressSaveRasterDialog(mapCtrl, this.layers, this.currentProjection,
188
                                                                                dimension, ext);
189
                
190
                progressBar.setProps(driverProps);
191
                progressBar.setWriter(writer);
192
                progressBar.setFName(fName);
193
                progressBar.setBlockSize(sizeBlock);
194
                progressBar.setCompresion(compresion);
195
                progressBar.showWindow();
196
                                
197
                for(int i=0;i<layers.getLayersCount();i++){
198
                        layers.getLayer(i).getFMap().invalidate();
199
                }
200
    }
201
    
202
    /**
203
     * Obtiene el panel con los controles de Salvar a Raster.
204
     * @return
205
     */
206
    public JPanel getContentPanel() {
207
        if (contentPane == null) {
208
                contentPane = new SaveRasterControlsPanel();
209
            contentPane.setPreferredSize(new java.awt.Dimension(359, 297));
210
        }
211
        return contentPane;
212
    }
213

    
214
        public DataInputSaveListener getListener() {
215
                return listener;
216
        }
217
        
218
        /**
219
         * This method initializes jContentPane        
220
         *         
221
         * @return javax.swing.JPanel        
222
         */    
223
        public Container getContentPane() {
224
                return this;
225
        }
226
        
227
        /**
228
         * Asigna la lista de capas
229
         * @param layers
230
         */
231
        public void setLayerList(FLayers layers){
232
                this.layers = layers;
233
        }
234
        
235
        /**
236
         * @see com.iver.mdiApp.ui.MDIManager.View#getViewInfo()
237
         */
238
        public ViewInfo getViewInfo() {
239
                ViewInfo m_viewinfo=new ViewInfo(ViewInfo.MODALDIALOG);
240
                    m_viewinfo.setTitle(PluginServices.getText(this, "salvar_raster"));
241
                return m_viewinfo;
242
        }
243
}