root / trunk / applications / appgvSIG / src / com / iver / cit / gvsig / gui / FOpenDialog.java @ 402
History | View | Annotate | Download (22.6 KB)
1 |
/*
|
---|---|
2 |
* Created on 23-abr-2004
|
3 |
*
|
4 |
* To change the template for this generated file go to
|
5 |
* Window>Preferences>Java>Code Generation>Code and Comments
|
6 |
*/
|
7 |
package com.iver.cit.gvsig.gui; |
8 |
|
9 |
import java.awt.Color; |
10 |
import java.awt.Component; |
11 |
import java.io.File; |
12 |
import java.util.ArrayList; |
13 |
|
14 |
import javax.swing.BorderFactory; |
15 |
import javax.swing.DefaultListModel; |
16 |
import javax.swing.JDialog; |
17 |
import javax.swing.JFileChooser; |
18 |
import javax.swing.JList; |
19 |
import javax.swing.JPanel; |
20 |
import javax.swing.filechooser.FileFilter; |
21 |
|
22 |
import com.iver.cit.gvsig.gui.wms.WMSWizard; |
23 |
import com.iver.cit.gvsig.gui.wms.WizardListener; |
24 |
import com.iver.mdiApp.App; |
25 |
import com.iver.mdiApp.Utilities; |
26 |
import com.iver.mdiApp.plugins.files.SelectedFile; |
27 |
import com.iver.mdiApp.ui.MDIApplicationContext; |
28 |
import com.iver.mdiApp.ui.MDIManager.View; |
29 |
import com.iver.mdiApp.ui.MDIManager.ViewInfo; |
30 |
|
31 |
|
32 |
/**
|
33 |
* Di?logo para cargar las dieferentes capas a la vista.
|
34 |
*
|
35 |
* @author Vicente Caballero Navarro
|
36 |
*/
|
37 |
public class FOpenDialog extends JPanel implements View { |
38 |
// TODO LWS ?los m_Files ... ?tendr?an que ser GeoFiles (Projected y dem?s)?
|
39 |
private ArrayList m_Files; |
40 |
// private com.iver.cit.gvsig.gui.View view;
|
41 |
// private FMap m_fmap;
|
42 |
private SelectedFile[] selectedFile = null; |
43 |
|
44 |
//private javax.swing.JDialog jDialog = null; // @jve:visual-info decl-index=0 visual-constraint="19,27"
|
45 |
private javax.swing.JPanel jContentPane = null; // @jve:visual-info decl-index=0 visual-constraint="371,10" |
46 |
private javax.swing.JTabbedPane jTabbedPane = null; |
47 |
private javax.swing.JPanel pprimero = null; |
48 |
private javax.swing.JPanel psegundo = null; |
49 |
private javax.swing.JPanel pbotones = null; |
50 |
private javax.swing.JButton bAceptar = null; |
51 |
private javax.swing.JButton bCancelar = null; |
52 |
private javax.swing.JPanel jPanel2 = null; |
53 |
private javax.swing.JButton bExaminar = null; |
54 |
private javax.swing.JPanel jPanel = null; |
55 |
private JList jListLayers = null; |
56 |
private WMSWizard wiz;
|
57 |
|
58 |
private DefaultListModel m_lstModel; |
59 |
private ViewInfo m_viewinfo = null; |
60 |
|
61 |
/**
|
62 |
* Creates a new FOpenDialog object.
|
63 |
*
|
64 |
* @param view Vista que vamos a refrescar
|
65 |
* @param mapControl MapControl que recibe la capa (te puede interesar
|
66 |
* a?adirla al principal o al Overview.
|
67 |
*/
|
68 |
public FOpenDialog() {
|
69 |
this.add(getJContentPane());
|
70 |
this.setSize(getJContentPane().getSize());
|
71 |
m_Files = new ArrayList(); |
72 |
|
73 |
// Cada vez que se abre, se borran las capas que pudiera haber.
|
74 |
m_lstModel = new DefaultListModel(); |
75 |
} |
76 |
|
77 |
/**
|
78 |
* This method initializes this
|
79 |
*/
|
80 |
private void initialize() { |
81 |
this.setSize(343, 269); |
82 |
} |
83 |
|
84 |
/**
|
85 |
* DOCUMENT ME!
|
86 |
*
|
87 |
* @return DOCUMENT ME!
|
88 |
*/
|
89 |
public File[] getFiles() { |
90 |
File[] fAux = new File[m_Files.size()]; |
91 |
for (int i=0; i < m_Files.size(); i++) |
92 |
{ |
93 |
fAux[i] = (File) m_Files.get(i);
|
94 |
} |
95 |
return fAux;
|
96 |
} |
97 |
|
98 |
/**
|
99 |
* This method initializes jContentPane
|
100 |
*
|
101 |
* @return javax.swing.JPanel
|
102 |
*/
|
103 |
private javax.swing.JPanel getJContentPane() {
|
104 |
if (jContentPane == null) { |
105 |
jContentPane = new javax.swing.JPanel();
|
106 |
jContentPane.setLayout(null);
|
107 |
jContentPane.setSize(519, 347); |
108 |
jContentPane.setPreferredSize(new java.awt.Dimension(520,360)); |
109 |
jContentPane.add(getJTabbedPane(), null);
|
110 |
jContentPane.add(getPbotones(), null);
|
111 |
} |
112 |
|
113 |
return jContentPane;
|
114 |
} |
115 |
|
116 |
/**
|
117 |
* This method initializes jTabbedPane
|
118 |
*
|
119 |
* @return javax.swing.JTabbedPane
|
120 |
*/
|
121 |
private javax.swing.JTabbedPane getJTabbedPane() {
|
122 |
if (jTabbedPane == null) { |
123 |
jTabbedPane = new javax.swing.JTabbedPane();
|
124 |
jTabbedPane.setBounds(0, 0, 519, 352); |
125 |
jTabbedPane.addTab(Utilities.getMessage(this,"Archivos_de_Disco"), null, getPprimero(), null); |
126 |
jTabbedPane.addTab(Utilities.getMessage(this,"WMS"), null, getPsegundo(), null); |
127 |
} |
128 |
|
129 |
return jTabbedPane;
|
130 |
} |
131 |
|
132 |
/**
|
133 |
* This method initializes pprimero
|
134 |
*
|
135 |
* @return javax.swing.JPanel
|
136 |
*/
|
137 |
private javax.swing.JPanel getPprimero() {
|
138 |
if (pprimero == null) { |
139 |
pprimero = new javax.swing.JPanel();
|
140 |
pprimero.setLayout(null);
|
141 |
pprimero.setBorder(javax.swing.BorderFactory.createBevelBorder( |
142 |
javax.swing.border.BevelBorder.RAISED)); |
143 |
pprimero.add(getJPanel2(), null);
|
144 |
pprimero.add(getJPanel(), null);
|
145 |
} |
146 |
|
147 |
return pprimero;
|
148 |
} |
149 |
|
150 |
/**
|
151 |
* This method initializes psegundo
|
152 |
*
|
153 |
* @return javax.swing.JPanel
|
154 |
*/
|
155 |
private javax.swing.JPanel getPsegundo() {
|
156 |
if (psegundo == null) { |
157 |
wiz = new WMSWizard();
|
158 |
wiz.addWizardListener(new MyWMSWizardListener());
|
159 |
wiz.setDataSource(new WMSDataSourceAdapter());
|
160 |
psegundo = wiz; |
161 |
} |
162 |
|
163 |
return psegundo;
|
164 |
} |
165 |
|
166 |
/**
|
167 |
* This method initializes pbotones
|
168 |
*
|
169 |
* @return javax.swing.JPanel
|
170 |
*/
|
171 |
private javax.swing.JPanel getPbotones() {
|
172 |
if (pbotones == null) { |
173 |
pbotones = new javax.swing.JPanel();
|
174 |
pbotones.setBounds(0, 318, 519, 37); |
175 |
} |
176 |
|
177 |
return pbotones;
|
178 |
} |
179 |
|
180 |
/**
|
181 |
* This method initializes bAceptar
|
182 |
*
|
183 |
* @return javax.swing.JButton
|
184 |
*/
|
185 |
private javax.swing.JButton getBAceptar() {
|
186 |
if (bAceptar == null) { |
187 |
bAceptar = new javax.swing.JButton();
|
188 |
bAceptar.setText(Utilities.getMessage(this,"Aceptar")); |
189 |
bAceptar.setPreferredSize(new java.awt.Dimension(110, 25)); |
190 |
bAceptar.addActionListener(new java.awt.event.ActionListener() {
|
191 |
public void actionPerformed(java.awt.event.ActionEvent e) { |
192 |
if (App.instance != null) { |
193 |
App.instance.getMDIContext().closeView(FOpenDialog.this); |
194 |
} else {
|
195 |
((JDialog) (getParent().getParent().getParent()
|
196 |
.getParent())).dispose(); |
197 |
} |
198 |
} |
199 |
}); |
200 |
} |
201 |
|
202 |
return bAceptar;
|
203 |
} |
204 |
|
205 |
/**
|
206 |
* This method initializes bCancelar
|
207 |
*
|
208 |
* @return javax.swing.JButton
|
209 |
*/
|
210 |
private javax.swing.JButton getBCancelar() {
|
211 |
if (bCancelar == null) { |
212 |
bCancelar = new javax.swing.JButton();
|
213 |
bCancelar.setText(Utilities.getMessage(this,"Cancelar")); |
214 |
bCancelar.setPreferredSize(new java.awt.Dimension(110, 25)); |
215 |
bCancelar.addActionListener(new java.awt.event.ActionListener() {
|
216 |
public void actionPerformed(java.awt.event.ActionEvent e) { |
217 |
if (App.instance == null) { |
218 |
((JDialog) (getParent().getParent().getParent()
|
219 |
.getParent())).dispose(); |
220 |
} else {
|
221 |
App.instance.getMDIContext().closeView(FOpenDialog.this); |
222 |
} |
223 |
} |
224 |
}); |
225 |
} |
226 |
|
227 |
return bCancelar;
|
228 |
} |
229 |
|
230 |
/**
|
231 |
* This method initializes jPanel2
|
232 |
*
|
233 |
* @return javax.swing.JPanel
|
234 |
*/
|
235 |
private javax.swing.JPanel getJPanel2() {
|
236 |
if (jPanel2 == null) { |
237 |
javax.swing.border.TitledBorder titledBorder1 = javax.swing.BorderFactory.createTitledBorder(null,
|
238 |
Utilities.getMessage(this,"Seleccionar_fichero"), |
239 |
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, |
240 |
javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null); |
241 |
jPanel2 = new javax.swing.JPanel();
|
242 |
jPanel2.setLayout(null);
|
243 |
jPanel2.setBorder(titledBorder1); |
244 |
jPanel2.setPreferredSize(new java.awt.Dimension(380,200)); |
245 |
jPanel2.setBounds(2, 2, 510, 272); |
246 |
titledBorder1.setTitle(Utilities.getMessage(this,"Capas")); |
247 |
jPanel2.add(getJListLayers(), null);
|
248 |
jPanel2.add(getBExaminar(), null);
|
249 |
} |
250 |
|
251 |
return jPanel2;
|
252 |
} |
253 |
|
254 |
/**
|
255 |
* This method initializes bExaminar
|
256 |
*
|
257 |
* @return javax.swing.JButton
|
258 |
*/
|
259 |
private javax.swing.JButton getBExaminar() {
|
260 |
if (bExaminar == null) { |
261 |
bExaminar = new javax.swing.JButton();
|
262 |
bExaminar.setText(Utilities.getMessage(this,"Anadir")+"..."); |
263 |
bExaminar.setBounds(380, 22, 111, 29); |
264 |
bExaminar.addActionListener(new java.awt.event.ActionListener() {
|
265 |
public void actionPerformed(java.awt.event.ActionEvent e) { |
266 |
if (App.instance == null) { |
267 |
JFileChooser tempChooser = new JFileChooser(); |
268 |
tempChooser.setMultiSelectionEnabled(true);
|
269 |
|
270 |
//tempChooser.setFileSelectionMode(tempChooser.FILES_ONLY);
|
271 |
// A?ade filtro para raster (de momento ecw)
|
272 |
tempChooser.addChoosableFileFilter(new FileFilter() { |
273 |
public boolean accept(File f) { |
274 |
String extension = ""; |
275 |
|
276 |
if (f.isDirectory()) {
|
277 |
return true; |
278 |
} |
279 |
|
280 |
int i = f.getName().lastIndexOf('.'); |
281 |
|
282 |
if (i > 0) { |
283 |
extension = f.getName() |
284 |
.substring(i + 1)
|
285 |
.toLowerCase(); |
286 |
} |
287 |
|
288 |
if (extension.equals("ecw") || (extension.equals("tif")) || |
289 |
(extension.equals("jpg")) || (extension.equals("png")) ) { |
290 |
return true; |
291 |
} else {
|
292 |
return false; |
293 |
} |
294 |
} |
295 |
|
296 |
public String getDescription() { |
297 |
return "Raster Files (*.ecw,tif,jpg,png)"; |
298 |
} |
299 |
}); |
300 |
|
301 |
// filtro para DXF
|
302 |
tempChooser.addChoosableFileFilter(new FileFilter() { |
303 |
public boolean accept(File f) { |
304 |
String extension = ""; |
305 |
|
306 |
if (f.isDirectory()) {
|
307 |
return true; |
308 |
} |
309 |
|
310 |
int i = f.getName().lastIndexOf('.'); |
311 |
|
312 |
if (i > 0) { |
313 |
extension = f.getName() |
314 |
.substring(i + 1)
|
315 |
.toLowerCase(); |
316 |
} |
317 |
|
318 |
if (extension.equals("dxf")) { |
319 |
return true; |
320 |
} else {
|
321 |
return false; |
322 |
} |
323 |
} |
324 |
|
325 |
public String getDescription() { |
326 |
return "Autocad DXF Files (*.dxf)"; |
327 |
} |
328 |
}); |
329 |
|
330 |
// filtro para GML
|
331 |
tempChooser.addChoosableFileFilter(new FileFilter() { |
332 |
public boolean accept(File f) { |
333 |
String extension = ""; |
334 |
|
335 |
if (f.isDirectory()) { return true; } |
336 |
|
337 |
int i = f.getName().lastIndexOf('.'); |
338 |
|
339 |
if (i > 0) { |
340 |
extension = f.getName() |
341 |
.substring(i + 1)
|
342 |
.toLowerCase(); |
343 |
} |
344 |
|
345 |
if (extension.equals("gml")) { |
346 |
return true; |
347 |
} else {
|
348 |
return false; |
349 |
} |
350 |
} |
351 |
|
352 |
public String getDescription() { |
353 |
return "JUMP GML Files (*.gml)"; |
354 |
} |
355 |
}); |
356 |
// A?ade filtro para DGN
|
357 |
tempChooser.addChoosableFileFilter(new FileFilter() { |
358 |
public boolean accept(File f) { |
359 |
String extension = ""; |
360 |
|
361 |
if (f.isDirectory()) {
|
362 |
return true; |
363 |
} |
364 |
|
365 |
int i = f.getName().lastIndexOf('.'); |
366 |
|
367 |
if (i > 0) { |
368 |
extension = f.getName() |
369 |
.substring(i + 1)
|
370 |
.toLowerCase(); |
371 |
} |
372 |
|
373 |
if (extension.equals("dgn")) { |
374 |
return true; |
375 |
} else {
|
376 |
return false; |
377 |
} |
378 |
} |
379 |
|
380 |
public String getDescription() { |
381 |
return "Microstation Files (*.dgn)"; |
382 |
} |
383 |
}); |
384 |
|
385 |
// Archivos .shp
|
386 |
tempChooser.addChoosableFileFilter(new FileFilter() { |
387 |
public boolean accept(File f) { |
388 |
String extension = ""; |
389 |
|
390 |
if (f.isDirectory()) {
|
391 |
return true; |
392 |
} |
393 |
|
394 |
int i = f.getName().lastIndexOf('.'); |
395 |
|
396 |
if (i > 0) { |
397 |
extension = f.getName() |
398 |
.substring(i + 1)
|
399 |
.toLowerCase(); |
400 |
} |
401 |
|
402 |
if (extension.equals("shp")) { |
403 |
return true; |
404 |
} else {
|
405 |
return false; |
406 |
} |
407 |
} |
408 |
|
409 |
public String getDescription() { |
410 |
return "Shapes Files (*.shp)"; |
411 |
} |
412 |
}); |
413 |
|
414 |
int result = tempChooser.showOpenDialog((Component) e.getSource()); |
415 |
|
416 |
File[] newFiles = null; |
417 |
if (result == JFileChooser.APPROVE_OPTION) { |
418 |
newFiles = tempChooser.getSelectedFiles(); |
419 |
for (int ind=0; ind < newFiles.length; ind++) |
420 |
m_Files.add(newFiles[ind]); |
421 |
|
422 |
// setText(tempFile.getPath());
|
423 |
} |
424 |
else
|
425 |
return;
|
426 |
|
427 |
// DefaultListModel lstModel = new DefaultListModel();
|
428 |
|
429 |
for (int iFile = 0; iFile < newFiles.length; |
430 |
iFile++) { |
431 |
File theFile = newFiles[iFile]; //(File) m_Files.get(iFile); |
432 |
String absolutePath = theFile.getAbsolutePath();
|
433 |
// Miramos por si es un ecwp:
|
434 |
int test = absolutePath.indexOf("ecwp:"); |
435 |
if (test == -1) |
436 |
m_lstModel.addElement(absolutePath); |
437 |
else
|
438 |
m_lstModel.addElement(absolutePath.substring(test)); |
439 |
} |
440 |
|
441 |
getJListLayers().setModel(m_lstModel); |
442 |
} else {
|
443 |
|
444 |
SelectedFile[] aux = App.instance.getMDIContext()
|
445 |
.showMultipleFileChooser("openLayer",
|
446 |
Utilities.getMessage(this, "Anadir_Capa"), |
447 |
false, MDIApplicationContext.FILES_ONLY);
|
448 |
|
449 |
int desde = 0; |
450 |
int iFile;
|
451 |
|
452 |
if (selectedFile == null) |
453 |
{ |
454 |
selectedFile = aux; |
455 |
} |
456 |
else
|
457 |
{ |
458 |
SelectedFile[] mezclaFile = new SelectedFile[aux.length + selectedFile.length]; |
459 |
// Copiamos los del principio
|
460 |
for (iFile = 0; iFile < selectedFile.length; iFile++) |
461 |
{ |
462 |
mezclaFile[iFile] = selectedFile[iFile]; |
463 |
} |
464 |
desde = selectedFile.length; |
465 |
selectedFile = mezclaFile; |
466 |
} |
467 |
|
468 |
|
469 |
// m_lstModel = new DefaultListModel();
|
470 |
|
471 |
for (iFile = 0; iFile < aux.length; |
472 |
iFile++) { |
473 |
selectedFile[iFile + desde] = aux[iFile]; |
474 |
String absolutePath = aux[iFile].getFile().getAbsolutePath();
|
475 |
// Miramos por si es un ecwp:
|
476 |
int test = absolutePath.indexOf("ecwp:"); |
477 |
if (test == -1) |
478 |
m_lstModel.addElement(absolutePath); |
479 |
else
|
480 |
m_lstModel.addElement(absolutePath.substring(test)); |
481 |
|
482 |
// lstModel.addElement(selectedFile[iFile].getFile());
|
483 |
} |
484 |
|
485 |
getJListLayers().setModel(m_lstModel); |
486 |
} |
487 |
|
488 |
// aExt.openFileChooser();
|
489 |
} |
490 |
}); |
491 |
} |
492 |
|
493 |
return bExaminar;
|
494 |
} |
495 |
|
496 |
/**
|
497 |
* This method initializes jPanel
|
498 |
*
|
499 |
* @return javax.swing.JPanel
|
500 |
*/
|
501 |
private javax.swing.JPanel getJPanel() {
|
502 |
if (jPanel == null) { |
503 |
jPanel = new javax.swing.JPanel();
|
504 |
jPanel.setBounds(1, 281, 510, 35); |
505 |
jPanel.add(getBAceptar(), null);
|
506 |
jPanel.add(getBCancelar(), null);
|
507 |
} |
508 |
|
509 |
return jPanel;
|
510 |
} |
511 |
|
512 |
/* (non-Javadoc)
|
513 |
* @see com.iver.mdiApp.ui.MDIManager.View#getViewInfo()
|
514 |
*/
|
515 |
public ViewInfo getViewInfo() {
|
516 |
if (m_viewinfo==null){ |
517 |
m_viewinfo=new ViewInfo();
|
518 |
m_viewinfo.setFeatures(ViewInfo.MODALDIALOG); |
519 |
m_viewinfo.setResizable(false);
|
520 |
m_viewinfo.setTitle(Utilities.getMessage(this,"Abrir_una_capa")); |
521 |
} |
522 |
return m_viewinfo;
|
523 |
} |
524 |
|
525 |
/**
|
526 |
* @see com.iver.mdiApp.ui.MDIManager.View#viewActivated()
|
527 |
*/
|
528 |
public void viewActivated() { |
529 |
} |
530 |
|
531 |
/**
|
532 |
* This method initializes jList
|
533 |
*
|
534 |
* @return javax.swing.JList
|
535 |
*/
|
536 |
private JList getJListLayers() { |
537 |
if (jListLayers == null) { |
538 |
jListLayers = new JList(); |
539 |
jListLayers.setPreferredSize(new java.awt.Dimension(350, 50)); |
540 |
jListLayers.setBounds(12, 20, 350, 240); |
541 |
jListLayers.setBorder(BorderFactory.createLineBorder(Color.BLACK)); |
542 |
} |
543 |
|
544 |
return jListLayers;
|
545 |
} |
546 |
|
547 |
/**
|
548 |
* DOCUMENT ME!
|
549 |
*
|
550 |
* @author Fernando Gonz?lez Cort?s
|
551 |
*/
|
552 |
public class MyWMSWizardListener implements WizardListener { |
553 |
/**
|
554 |
* DOCUMENT ME!
|
555 |
*/
|
556 |
public void finalizar() { |
557 |
/* String layerQuery = wiz.getLayersQuery();
|
558 |
|
559 |
Rectangle2D rect;
|
560 |
|
561 |
rect = m_fmap.getViewPort().getExtent();
|
562 |
|
563 |
if (rect == null) {
|
564 |
rect = wiz.getLayersRectangle();
|
565 |
if (rect == null) {
|
566 |
App.instance.getNm().addError("No hay un bounding box en la especificaci?n, y tampoco en el FMap.",
|
567 |
null);
|
568 |
|
569 |
return; //Si no hay un bounding box en la especificaci?n, y tampoco en el FMap.
|
570 |
}
|
571 |
|
572 |
} */
|
573 |
System.err.println("Por implementar"); |
574 |
//TODO a?adir la capa WMS desde fuera
|
575 |
|
576 |
//TODO descomentar esto cuando haya un driver de WMS
|
577 |
|
578 |
/*
|
579 |
if (rect != null) {
|
580 |
FLayer lyr = new FLyrWMS(wiz.getHost(), rect,
|
581 |
(String) wiz.getFormat(), layerQuery, wiz.getQueryableLayerQuery(),
|
582 |
wiz.getSRS(), true);
|
583 |
lyr.setName(wiz.getLayerName());
|
584 |
view.getMapControl().getLayers().addLayer(lyr);
|
585 |
view.getTOC().refresh();
|
586 |
view.getMapControl().drawMap();
|
587 |
App.instance.getMDIContext().closeView(FOpenDialog.this);
|
588 |
} else {
|
589 |
}
|
590 |
*/
|
591 |
} |
592 |
|
593 |
/**
|
594 |
* DOCUMENT ME!
|
595 |
*/
|
596 |
public void cancelWizard() { |
597 |
if (App.instance != null) |
598 |
App.instance.getMDIContext().closeView(FOpenDialog.this); |
599 |
} |
600 |
|
601 |
/**
|
602 |
* @see com.iver.cit.gvsig.gui.wms.WizardListener#error(java.lang.String)
|
603 |
*/
|
604 |
public void error(Exception e) { |
605 |
App.instance.getNm().addError(e.getMessage(), e); |
606 |
} |
607 |
} |
608 |
public SelectedFile[] getSelectedFiles() { |
609 |
return selectedFile;
|
610 |
} |
611 |
} // @jve:decl-index=0:visual-constraint="10,10"
|
612 |
// @jve:visual-info decl-index=0 visual-constraint="10,10"
|
613 |
// @jve:visual-info decl-index=0 visual-constraint="10,10"
|