Revision 39484 branches/v2_0_0_prep/frameworks/_fwAndami/src/org/gvsig/andami/ui/mdiFrame/DefaultThreadSafeDialogs.java

View differences:

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