Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extRasterTools-SE / src / org / gvsig / raster / FileNotFoundSolvePanel.java @ 27477

History | View | Annotate | Download (8.5 KB)

1
package org.gvsig.raster;
2

    
3
import java.awt.BorderLayout;
4
import java.awt.FlowLayout;
5
import java.awt.event.ActionListener;
6
import java.io.File;
7
import java.io.FileInputStream;
8

    
9
import javax.swing.JButton;
10
import javax.swing.JFileChooser;
11
import javax.swing.JLabel;
12
import javax.swing.JPanel;
13
import javax.swing.JTextField;
14
import javax.swing.filechooser.FileFilter;
15

    
16
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
17
import org.gvsig.fmap.raster.layers.ISolveErrorListener;
18
import org.gvsig.gui.beans.AcceptCancelPanel;
19

    
20
import com.iver.andami.PluginServices;
21
import com.iver.andami.ui.mdiManager.IWindow;
22
import com.iver.andami.ui.mdiManager.WindowInfo;
23

    
24
/**
25
 * Panel de resoluci?n de errores construido como el de appgvSIG.
26
 * El uso de este panel es temporal hasta que se generalize uno para todo 
27
 * tipo de capas. Para ello no deber?a depender de FileNotFoundSolve sino
28
 * de ISolveErrorListener.
29
 * 
30
 * 18/03/2009
31
 * @author Nacho Brodin nachobrodin@gmail.com
32
 */
33
public class FileNotFoundSolvePanel extends JPanel implements IWindow {
34
        private static final long   serialVersionUID = 1L;
35
        private JPanel              jPanel           = null;
36
        private JPanel              jPanel1          = null;
37
        private JPanel              jPanel2          = null;
38
        private JPanel              jPanel3          = null;
39
        private JTextField          jTextField       = null;
40
        private JTextField          jTextField1      = null;
41
        private JButton             jButton          = null;
42
        private AcceptCancelPanel   accept           = null;
43
        private JFileChooser        fileChooser;
44
        private static String       lastPath;
45
        private ISolveErrorListener model;
46
        File                        myfile           = null;
47
        private JPanel              jPanel4          = null;
48
        private JLabel              jLabel1          = null;
49

    
50
        /**
51
         * This is the default constructor
52
         */
53
        public FileNotFoundSolvePanel(ISolveErrorListener fnfs) {
54
                super();
55
                this.model = fnfs;
56
                initialize();
57

    
58
        }
59

    
60
        /**
61
         * This method initializes this
62
         *
63
         * @return void
64
         */
65
        private void initialize() {
66
                this.setLayout(new FlowLayout());
67
                this.setSize(426, 174);
68
                this.add(getJPanel(), null);
69
        }
70

    
71
        /**
72
         * This method initializes jPanel
73
         *
74
         * @return javax.swing.JPanel
75
         */
76
        private JPanel getJPanel() {
77
                if (jPanel == null) {
78
                        jPanel = new JPanel();
79
                        jPanel.setLayout(new BorderLayout());
80
                        jPanel.add(getJPanel1(), java.awt.BorderLayout.NORTH);
81
                        jPanel.add(getJPanel2(), java.awt.BorderLayout.CENTER);
82
                        jPanel.add(getJPanel3(), java.awt.BorderLayout.SOUTH);
83
                }
84
                return jPanel;
85
        }
86

    
87
        /**
88
         * This method initializes jPanel1
89
         *
90
         * @return javax.swing.JPanel
91
         */
92
        private JPanel getJPanel1() {
93
                if (jPanel1 == null) {
94
                        jPanel1 = new JPanel();
95
                        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, PluginServices.getText(this,"incorrect_path"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
96
                        jPanel1.add(getJTextField(), null);
97
                }
98
                return jPanel1;
99
        }
100

    
101
        /**
102
         * This method initializes jPanel2
103
         *
104
         * @return javax.swing.JPanel
105
         */
106
        private JPanel getJPanel2() {
107
                if (jPanel2 == null) {
108
                        jPanel2 = new JPanel();
109
                        jPanel2.setLayout(new BorderLayout());
110
                        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, PluginServices.getText(this,"new_file_properties"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
111
                        jPanel2.add(getJPanel4(), java.awt.BorderLayout.CENTER);
112
                }
113
                return jPanel2;
114
        }
115

    
116
        /**
117
         * This method initializes jPanel3
118
         *
119
         * @return javax.swing.JPanel
120
         */
121
        private JPanel getJPanel3() {
122
                if (jPanel3 == null) {
123
                        jPanel3 = new JPanel();
124
                        jPanel3.add(getAcceptCancelPanel());
125
                }
126
                return jPanel3;
127
        }
128
        
129
        private AcceptCancelPanel getAcceptCancelPanel() {
130
                if (accept == null) {
131
                        ActionListener okAction, cancelAction;
132
                        okAction = new java.awt.event.ActionListener() {
133
                                public void actionPerformed(java.awt.event.ActionEvent e) {
134
                                        model.createLayer(new File(getJTextField1().getText()));
135
                                        PluginServices.getMDIManager().closeWindow(
136
                                                        FileNotFoundSolvePanel.this);
137
                                }
138
                        };
139
                        cancelAction = new java.awt.event.ActionListener() {
140
                                public void actionPerformed(java.awt.event.ActionEvent e) {
141
                                        PluginServices.getMDIManager().closeWindow(
142
                                                        FileNotFoundSolvePanel.this);
143
                                }
144
                        };
145
                        accept = new AcceptCancelPanel(okAction, cancelAction);
146
                        accept.setPreferredSize(new java.awt.Dimension(300, 300));
147
                        accept.setEnabled(true);
148
                        accept.setVisible(true);
149
                }
150
                return accept;
151
        }
152

    
153
        /**
154
         * This method initializes jTextField
155
         *
156
         * @return javax.swing.JTextField
157
         */
158
        private JTextField getJTextField() {
159
                if (jTextField == null) {
160
                        jTextField = new JTextField();
161
                        jTextField.setPreferredSize(new java.awt.Dimension(400,23));
162
                        jTextField.setEditable(false);
163
                        jTextField.setText(model.getPath());
164
                }
165
                return jTextField;
166
        }
167

    
168
        /**
169
         * This method initializes jTextField1
170
         *
171
         * @return javax.swing.JTextField
172
         */
173
        private JTextField getJTextField1() {
174
                if (jTextField1 == null) {
175
                        jTextField1 = new JTextField();
176
                        jTextField1.setPreferredSize(new java.awt.Dimension(300,23));
177
                }
178
                return jTextField1;
179
        }
180

    
181
        /**
182
         * This method initializes jButton
183
         *
184
         * @return javax.swing.JButton
185
         */
186
        private JButton getJButton() {
187
                if (jButton == null) {
188
                        jButton = new JButton();
189
                        jButton.setPreferredSize(new java.awt.Dimension(34,20));
190
                        jButton.setText("...");
191
                        jButton.addActionListener(new java.awt.event.ActionListener() {
192
                                public void actionPerformed(java.awt.event.ActionEvent e) {
193
                                        myfile = addObjects();
194
                                        if (myfile != null)
195
                                                getJTextField1().setText(myfile.getAbsolutePath());
196
                                }
197
                        });
198
                }
199
                return jButton;
200
        }
201
        
202
        public File addObjects() {
203
                fileChooser = new JFileChooser(lastPath);
204
                fileChooser.setMultiSelectionEnabled(false);
205
                fileChooser.setAcceptAllFileFilterUsed(false);
206
                        
207
                RasterDriverFileFilter vff = new RasterDriverFileFilter();
208
                fileChooser.addChoosableFileFilter(vff);
209
                fileChooser.setFileFilter(vff);
210

    
211
                int result = fileChooser.showOpenDialog(this);
212

    
213
                File newFile = null;
214
                if (result == JFileChooser.APPROVE_OPTION) {
215
                        lastPath = fileChooser.getCurrentDirectory().getAbsolutePath();
216
                        newFile = fileChooser.getSelectedFile();
217
                        return newFile;
218
                }
219
                return null;
220
        }
221

    
222
        /* (non-Javadoc)
223
         * @see com.iver.andami.ui.mdiManager.IWindow#getWindowInfo()
224
         */
225
        public WindowInfo getWindowInfo() {
226
                WindowInfo wi=new WindowInfo(WindowInfo.MODALDIALOG | WindowInfo.RESIZABLE);
227
                wi.setTitle(PluginServices.getText(this,"dont_find_the_file") + ": " + model.getLayerName());
228
                return wi;
229
        }
230

    
231
        /**
232
         * This method initializes jPanel4
233
         *
234
         * @return javax.swing.JPanel
235
         */
236
        private JPanel getJPanel4() {
237
                if (jPanel4 == null) {
238
                        jLabel1 = new JLabel();
239
                        jLabel1.setText(PluginServices.getText(this,"path"));
240
                        FlowLayout flowLayout1 = new FlowLayout();
241
                        flowLayout1.setAlignment(java.awt.FlowLayout.RIGHT);
242
                        jPanel4 = new JPanel();
243
                        jPanel4.setLayout(flowLayout1);
244
                        jPanel4.add(jLabel1, null);
245
                        jPanel4.add(getJTextField1(), null);
246
                        jPanel4.add(getJButton(), null);
247
                }
248
                return jPanel4;
249
        }
250

    
251
        public Object getWindowProfile() {
252
                return WindowInfo.DIALOG_PROFILE;
253
        }
254
        
255
        public class RasterDriverFileFilter extends FileFilter {
256
                /*
257
                 * (non-Javadoc)
258
                 * @see javax.swing.filechooser.FileFilter#accept(java.io.File)
259
                 */
260
                public boolean accept(File f) {
261
                        if (f.isDirectory())
262
                                return true;
263

    
264
                        if (f.getParentFile().getName().equals("cellhd")) {
265
                                if (f.getName().endsWith(".rmf") || f.getName().endsWith(".rmf~"))
266
                                        return false;
267
                                return true;
268
                        }
269

    
270
                        // Comprobamos que no sea un rmf propio, osea, que contenga xml
271
                        if (f.getName().toLowerCase().endsWith(".rmf")) {
272
                                FileInputStream reader = null;
273
                                try {
274
                                        reader = new FileInputStream(f);
275
                                        String xml = "";
276
                                        for (int i = 0; i < 6; i++)
277
                                                xml += (char) reader.read();
278
                                        if (xml.equals("<?xml "))
279
                                                return false;
280
                                } catch (Exception e) {
281
                                } finally {
282
                                        try {
283
                                                reader.close();
284
                                        } catch (Exception e) {}
285
                                }
286
                        }
287

    
288
                        return FLyrRasterSE.isFileAccepted(f);
289
                }
290

    
291
                /*
292
                 * (non-Javadoc)
293
                 * @see javax.swing.filechooser.FileFilter#getDescription()
294
                 */
295
                public String getDescription() {
296
                        return "gvSIG Raster Driver";
297
                }
298
        }
299

    
300
}  //  @jve:decl-index=0:visual-constraint="71,10"