Author: ruschein
Date: 2011-06-24 14:24:23 -0700 (Fri, 24 Jun 2011)
New Revision: 25926

Modified:
   
core3/work-swing-impl/trunk/impl/src/main/java/org/cytoscape/work/internal/tunables/FileHandler.java
   
core3/work-swing-impl/trunk/impl/src/main/java/org/cytoscape/work/internal/tunables/utils/FileChooserFilter.java
Log:
Work in progress towards a fix for Redmine Bug #95.

Modified: 
core3/work-swing-impl/trunk/impl/src/main/java/org/cytoscape/work/internal/tunables/FileHandler.java
===================================================================
--- 
core3/work-swing-impl/trunk/impl/src/main/java/org/cytoscape/work/internal/tunables/FileHandler.java
        2011-06-24 20:28:19 UTC (rev 25925)
+++ 
core3/work-swing-impl/trunk/impl/src/main/java/org/cytoscape/work/internal/tunables/FileHandler.java
        2011-06-24 21:24:23 UTC (rev 25926)
@@ -41,12 +41,12 @@
 public class FileHandler extends AbstractGUITunableHandler {
        private static final String DEF_DIRECTORY = 
System.getProperty("user.home");
        private static final String LAST_DIRECTORY = "directory.last";
-       
+
        // Core Cytoscape props
        private final Properties props;
-       
+
        private JFileChooser fileChooser;
-       
+
        private JButton chooseButton;
        private JTextField fileTextField;
        private ImageIcon image;
@@ -69,7 +69,7 @@
         * @param f field that has been annotated
         * @param o object contained in <code>f</code>
         * @param t tunable associated to <code>f</code>
-        * @param fileTypesManager 
+        * @param fileTypesManager
         */
        protected FileHandler(Field f, Object o, Tunable t,
                              final SupportedFileTypesManager fileTypesManager,
@@ -141,9 +141,27 @@
                final String fileCategory = getFileCategory();
                fileTextField.setText("Please select a " + 
fileCategory.toLowerCase() + " file...");
                titleLabel.setText((input ? "Load " : "Save ") + 
initialCaps(fileCategory) + " File");
-               
-               for (FileChooserFilter filter : filters)
-                       fileChooser.addChoosableFileFilter(filter);
+
+               int i = 0;
+               boolean selectedDefault = false;
+               for (FileChooserFilter filter : filters) {
+                       // If we're down to the last filter and we haven't yet 
selected a default,
+                       // do it now!
+                       if (++i == filters.size() && !selectedDefault)
+                               fileChooser.setFileFilter(filter);
+
+                       // If we haven't yet selected a default and our 
filter's description starts
+                       // with "All ", make it the default.
+                       else if (!selectedDefault && 
filter.getDescription().startsWith("All ")) {
+                               fileChooser.setFileFilter(filter);
+                               selectedDefault = true;
+                       }
+
+                       // Not a "special" filter, just add it to the list.
+                       else 
+                               fileChooser.addChoosableFileFilter(filter);
+               }
+               fileChooser.setAcceptAllFileFilterUsed(false);
        }
 
        private String getFileCategory() {
@@ -198,26 +216,26 @@
                public void actionPerformed(ActionEvent ae) {
                        File file = null;
                        final String lastDir = 
props.getProperty(LAST_DIRECTORY, DEF_DIRECTORY);
-                       
+
                        File lastDirFile;
                        try {
                                lastDirFile = new File(lastDir);
                        } catch (Exception e){
                                lastDirFile = new File(DEF_DIRECTORY);
                        }
-                       
+
                        if (!lastDirFile.isDirectory())
                                lastDirFile = new File(DEF_DIRECTORY);
-                       
+
                        fileChooser.setCurrentDirectory(lastDirFile);
-                       
+
 try_again:              {
                                int ret = JFileChooser.CANCEL_OPTION;
                                if (ae.getActionCommand().equals("open"))
                                        ret = fileChooser.showOpenDialog(panel);
                                else if (ae.getActionCommand().equals("save"))
                                        ret = fileChooser.showSaveDialog(panel);
-                       
+
                                if (ret == JFileChooser.APPROVE_OPTION) {
                                        file = fileChooser.getSelectedFile();
                                        if (file != null) {

Modified: 
core3/work-swing-impl/trunk/impl/src/main/java/org/cytoscape/work/internal/tunables/utils/FileChooserFilter.java
===================================================================
--- 
core3/work-swing-impl/trunk/impl/src/main/java/org/cytoscape/work/internal/tunables/utils/FileChooserFilter.java
    2011-06-24 20:28:19 UTC (rev 25925)
+++ 
core3/work-swing-impl/trunk/impl/src/main/java/org/cytoscape/work/internal/tunables/utils/FileChooserFilter.java
    2011-06-24 21:24:23 UTC (rev 25926)
@@ -23,7 +23,8 @@
 
        //accept or not the file from jfilechooser
        public boolean accept(final File file) {
-               if (file.isDirectory()) return true;
+               if (file.isDirectory())
+                       return false;
 
                String fileName = file.getName().toLowerCase();
 

-- 
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