Author: clopes
Date: 2011-07-13 13:32:54 -0700 (Wed, 13 Jul 2011)
New Revision: 26168

Modified:
   
core3/swing-util-api/trunk/src/main/java/org/cytoscape/util/swing/internal/FileUtilImpl.java
Log:
fixes #320 (Cannot select files when opening a session on Mac)

Modified: 
core3/swing-util-api/trunk/src/main/java/org/cytoscape/util/swing/internal/FileUtilImpl.java
===================================================================
--- 
core3/swing-util-api/trunk/src/main/java/org/cytoscape/util/swing/internal/FileUtilImpl.java
        2011-07-13 17:00:39 UTC (rev 26167)
+++ 
core3/swing-util-api/trunk/src/main/java/org/cytoscape/util/swing/internal/FileUtilImpl.java
        2011-07-13 20:32:54 UTC (rev 26168)
@@ -31,22 +31,17 @@
 
 
 import java.awt.Component;
+import java.awt.Dialog;
 import java.awt.FileDialog;
-import java.awt.Dialog;
 import java.awt.Frame;
-import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FilenameFilter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.net.URL;
 import java.util.Collection;
 import java.util.Properties;
 
 import javax.swing.JFileChooser;
 import javax.swing.JOptionPane;
+import javax.swing.filechooser.FileFilter;
 
 import org.cytoscape.property.CyProperty;
 import org.cytoscape.util.swing.FileChooserFilter;
@@ -113,50 +108,60 @@
         * {@inheritDoc}
         */
        @Override
-       public File[] getFiles(final Component parent, final String title,
-                              final int load_save_custom, final String 
start_dir,
-                              final String custom_approve_text, final boolean 
multiselect,
-                              final Collection<FileChooserFilter> filters)
+       public File[] getFiles(final Component parent,
+                                                  final String title,
+                                                  final int load_save_custom,
+                                                  String start_dir,
+                                                  final String 
custom_approve_text,
+                                                  final boolean multiselect,
+                                                  final 
Collection<FileChooserFilter> filters)
        {
                if (parent == null)
                        throw new NullPointerException("\"parent\" must not be 
null!");
 
-               File start = null;
-
                if (start_dir == null)
-                       start = new 
File(coreProperties.getProperty(FileUtil.LAST_DIRECTORY,
-                                                                   
System.getProperty("user.dir")));
-               else
-                       start = new File(start_dir);
-
+                       start_dir = 
coreProperties.getProperty(FileUtil.LAST_DIRECTORY,
+                                                          
System.getProperty("user.dir"));
+               
                String osName = System.getProperty("os.name");
 
                if (osName.startsWith("Mac")) {
                        // This is a Macintosh, use the AWT style file dialog
-                       FileDialog chooser;
-                       if (parent instanceof Frame)
-                               chooser = new FileDialog((Frame) parent, title, 
load_save_custom);
-                       else
-                               chooser = new FileDialog((Dialog) parent, 
title, load_save_custom);
-
-                       chooser.setFilenameFilter(new 
CombinedFilenameFilter(filters));
-                       chooser.setVisible(true);
-
-                       if (chooser.getFile() != null) {
-                               File[] results = new File[1];
-                               results[0] = new File(chooser.getDirectory() + 
File.separator
-                                                     + chooser.getFile());
-
-                               if (chooser.getDirectory() != null)
-                                       
coreProperties.setProperty(FileUtil.LAST_DIRECTORY,
-                                                                  
chooser.getDirectory());
-
-                               return results;
+                       
+                       String fileDialogForDirectories = 
System.getProperty("apple.awt.fileDialogForDirectories");
+                       
System.setProperty("apple.awt.fileDialogForDirectories", "false");
+                       
+                       try {
+                       final FileDialog chooser;
+                       
+                       if (parent instanceof Frame)
+                               chooser = new FileDialog((Frame) parent, title, 
load_save_custom);
+                       else
+                               chooser = new FileDialog((Dialog) parent, 
title, load_save_custom);
+    
+                       if (start_dir != null)
+                               chooser.setDirectory(start_dir);
+                       
+                       chooser.setFilenameFilter(new 
CombinedFilenameFilter(filters));
+                       chooser.setVisible(true);
+    
+                       if (chooser.getFile() != null) {
+                               File[] results = new File[1];
+                               results[0] = new File(chooser.getDirectory() + 
File.separator + chooser.getFile());
+    
+                               if (chooser.getDirectory() != null)
+                                       
coreProperties.setProperty(FileUtil.LAST_DIRECTORY, chooser.getDirectory());
+    
+                               return results;
+                       }
+                       } finally {
+                               
System.setProperty("apple.awt.fileDialogForDirectories", 
fileDialogForDirectories);
                        }
-
+                       
                        return null;
                } else {
                        // this is not a Mac, use the Swing based file dialog
+                       final File start = new File(start_dir);
                        final JFileChooser chooser = new JFileChooser(start);
 
                        // set multiple selection, if applicable

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to