Revision 2657
trunk/applications/appgvSIG/src/com/iver/cit/gvsig/gui/FileOpenDialog.java | ||
---|---|---|
77 | 77 |
public class FileOpenDialog extends JPanel{ |
78 | 78 |
// TODO LWS ?los m_Files ... ?tendr?an que ser GeoFiles (Projected y dem?s)? |
79 | 79 |
private static String lastPath = null; |
80 |
private static FileFilter lastFileFilter = null; |
|
80 |
private static DriverFileFilter lastFileFilter = null;
|
|
81 | 81 |
private ArrayList m_Files; |
82 | 82 |
private javax.swing.JPanel jPanel2 = null; |
83 | 83 |
private DefaultListModel m_lstModel; |
... | ... | |
326 | 326 |
fileChooser.setAcceptAllFileFilterUsed(false); |
327 | 327 |
|
328 | 328 |
try { |
329 |
boolean last = false; |
|
329 | 330 |
String[] driverNames = LayerFactory.getDM().getDriverNames(); |
330 |
FileFilter defaultFileFilter = null, auxF; |
|
331 |
DriverFileFilter defaultFileFilter = null; |
|
332 |
DriverFileFilter auxF; |
|
331 | 333 |
for (int i = 0; i < driverNames.length; i++) { |
332 | 334 |
System.err.println("DRIVER "+i+" : "+driverNames[i]); |
333 | 335 |
boolean is = false; |
... | ... | |
339 | 341 |
if (is){ |
340 | 342 |
auxF = new DriverFileFilter(driverNames[i]); |
341 | 343 |
filters.add(auxF); |
342 |
if (driverNames[i].indexOf("shp") != -1) |
|
343 |
{ |
|
344 |
if (driverNames[i].indexOf("shp") != -1) { |
|
344 | 345 |
defaultFileFilter = auxF; |
345 | 346 |
} |
347 |
if (lastFileFilter != null) { |
|
348 |
if (driverNames[i].equals(lastFileFilter.driver.getName())){ |
|
349 |
last = true; |
|
350 |
} |
|
351 |
} |
|
346 | 352 |
} |
347 | 353 |
} |
348 |
if (defaultFileFilter != null){ |
|
349 |
if (lastFileFilter == null) |
|
350 |
fileChooser.setFileFilter(defaultFileFilter); |
|
351 |
else{ |
|
352 |
if (filters.contains(lastFileFilter)) |
|
353 |
fileChooser.setFileFilter(lastFileFilter); |
|
354 |
} |
|
354 |
DriverFileFilter def = (DriverFileFilter) fileChooser.getFileFilter(); |
|
355 |
if (last) { |
|
356 |
def = lastFileFilter; |
|
357 |
} else { |
|
358 |
if (lastFileFilter != null){ |
|
359 |
if (filters.contains(lastFileFilter)) { |
|
360 |
def = defaultFileFilter; |
|
361 |
} |
|
362 |
} |
|
355 | 363 |
} |
356 |
DriverFileFilter def = (DriverFileFilter) fileChooser.getFileFilter(); |
|
357 | 364 |
Iterator i = filters.iterator(); |
358 | 365 |
while (i.hasNext()) { |
359 | 366 |
DriverFileFilter element = (DriverFileFilter) i.next(); |
360 |
if (!element.driver.getName().equals(def.driver.getName())){ |
|
367 |
if (def != null){ |
|
368 |
if (!element.driver.getName().equals(def.driver.getName())){ |
|
369 |
fileChooser.addChoosableFileFilter(element); |
|
370 |
} |
|
371 |
} else { |
|
361 | 372 |
fileChooser.addChoosableFileFilter(element); |
362 | 373 |
} |
363 | 374 |
} |
375 |
if (def != null){ |
|
376 |
fileChooser.setFileFilter(def); |
|
377 |
} |
|
364 | 378 |
|
365 | 379 |
} catch (DriverLoadException e1) { |
366 | 380 |
NotificationManager.addError("No se pudo acceder a los drivers", e1); |
... | ... | |
371 | 385 |
File[] newFiles = null; |
372 | 386 |
MyFile[] toAdd; |
373 | 387 |
if (result == JFileChooser.APPROVE_OPTION) { |
374 |
lastFileFilter = fileChooser.getFileFilter(); |
|
388 |
lastFileFilter = (DriverFileFilter) fileChooser.getFileFilter();
|
|
375 | 389 |
lastPath = fileChooser.getCurrentDirectory().getAbsolutePath(); |
376 | 390 |
newFiles = fileChooser.getSelectedFiles(); |
377 | 391 |
toAdd = new MyFile[newFiles.length]; |
Also available in: Unified diff