Revision 39484 branches/v2_0_0_prep/frameworks/_fwAndami/src/org/gvsig/andami/ui/mdiFrame/DefaultThreadSafeDialogs.java
DefaultThreadSafeDialogs.java | ||
---|---|---|
6 | 6 |
import java.awt.GridBagConstraints; |
7 | 7 |
import java.awt.event.ComponentEvent; |
8 | 8 |
import java.awt.event.ComponentListener; |
9 |
import java.io.File; |
|
9 | 10 |
import java.lang.reflect.Constructor; |
10 | 11 |
|
12 |
import javax.swing.JFileChooser; |
|
11 | 13 |
import javax.swing.JOptionPane; |
12 | 14 |
import javax.swing.JPanel; |
13 | 15 |
import javax.swing.SwingUtilities; |
16 |
import javax.swing.filechooser.FileFilter; |
|
14 | 17 |
|
15 | 18 |
import org.gvsig.andami.PluginServices; |
16 | 19 |
import org.gvsig.andami.ui.mdiManager.IWindow; |
... | ... | |
339 | 342 |
} |
340 | 343 |
return component; |
341 | 344 |
} |
345 |
|
|
346 |
public File[] showChooserDialog( |
|
347 |
final String title, |
|
348 |
final int type, // SAVE_DIALOG / OPEN_DIALOG |
|
349 |
final int selectionMode, // JFileChooser.FILES_ONLY, JFileChooser.DIRECTORIES_ONLY, JFileChooser.FILES_AND_DIRECTORIES |
|
350 |
final boolean multiselection, |
|
351 |
final File initialPath, |
|
352 |
final FileFilter filter, |
|
353 |
final boolean fileHidingEnabled |
|
354 |
) { |
|
355 |
RunnableWithParameters runnable = new RunnableWithParameters() { |
|
356 |
public void run() { |
|
357 |
JFileChooser fc = new JFileChooser(); |
|
358 |
fc.setDialogTitle(title); |
|
359 |
fc.setDialogType(type); |
|
360 |
fc.setFileSelectionMode(selectionMode); |
|
361 |
fc.setMultiSelectionEnabled(multiselection); |
|
362 |
fc.setCurrentDirectory(initialPath); |
|
363 |
fc.setFileFilter(filter); |
|
364 |
fc.setFileHidingEnabled(fileHidingEnabled); |
|
365 |
int r = JFileChooser.CANCEL_OPTION; |
|
366 |
switch(type) { |
|
367 |
case JFileChooser.SAVE_DIALOG: |
|
368 |
r = fc.showSaveDialog(getRootComponent()); |
|
369 |
break; |
|
370 |
case JFileChooser.OPEN_DIALOG: |
|
371 |
default: |
|
372 |
r = fc.showOpenDialog(getRootComponent()); |
|
373 |
break; |
|
374 |
} |
|
375 |
if( r != JFileChooser.APPROVE_OPTION ) { |
|
376 |
this.returnValue = null; |
|
377 |
return; |
|
378 |
} |
|
379 |
if( fc.isMultiSelectionEnabled() ) { |
|
380 |
this.returnValue = fc.getSelectedFiles(); |
|
381 |
} else { |
|
382 |
this.returnValue = new File[] { fc.getSelectedFile() }; |
|
383 |
} |
|
384 |
} |
|
385 |
}; |
|
386 |
if (SwingUtilities.isEventDispatchThread()) { |
|
387 |
runnable.run(); |
|
388 |
} else { |
|
389 |
try { |
|
390 |
SwingUtilities.invokeAndWait(runnable); |
|
391 |
} catch (Exception e) { |
|
392 |
logger.info("Can't show chooser dialog '" + title + "'.", e); |
|
393 |
} |
|
394 |
} |
|
395 |
return (File[]) runnable.getReturnValue(); |
|
396 |
} |
|
397 |
|
|
398 |
public File[] showOpenDirectoryDialog(String title, File initialPath) { |
|
399 |
return showChooserDialog(title, JFileChooser.OPEN_DIALOG, JFileChooser.DIRECTORIES_ONLY, false, initialPath, null, false); |
|
400 |
} |
|
401 |
|
|
402 |
|
|
403 |
public File[] showOpenFileDialog(String title, File initialPath) { |
|
404 |
return showChooserDialog(title, JFileChooser.OPEN_DIALOG, JFileChooser.FILES_ONLY, false, initialPath, null, false); |
|
405 |
} |
|
406 |
|
|
407 |
|
|
408 |
public File[] showSaveFileDialog(String title, File initialPath) { |
|
409 |
return showChooserDialog(title, JFileChooser.SAVE_DIALOG, JFileChooser.FILES_ONLY, false, initialPath, null, false); |
|
410 |
} |
|
411 |
|
|
342 | 412 |
} |
Also available in: Unified diff