Bug 7304 fixed: ExportUI did not switch filename extension when filter changed 81/13681/2
Calixte DENIZET [Thu, 6 Feb 2014 16:45:32 +0000 (17:45 +0100)]
Change-Id: I61414d6a05b6263d8b0396bbbfe3181624a7af11

scilab/CHANGES_5.5.X
scilab/modules/gui/src/java/org/scilab/modules/gui/bridge/filechooser/ImagePreview.java
scilab/modules/gui/src/java/org/scilab/modules/gui/bridge/filechooser/SwingScilabExportFileChooser.java

index 9cbb02e..a4382cd 100644 (file)
@@ -133,6 +133,8 @@ Scilab Bug Fixes
 
 * Bug #7244 fixed - Extraction from a struct array with a boolean vector had a strange behavior.
 
+* Bug #7304 fixed - exportUI did not switch filename extension when filter was changed.
+
 * Bug #7417 fixed - Auto-positionning of datatips did not take the curvature into account.
 
 * Bug #7561 fixed - roots help page now explains that it uses coefficients in the contrary order of poly.
index 9349ec3..d7def30 100644 (file)
@@ -94,9 +94,13 @@ public class ImagePreview extends JComponent implements PropertyChangeListener {
             file = null;
             update = true;
         } else if (JFileChooser.SELECTED_FILE_CHANGED_PROPERTY.equals(prop)) {
-            file = (File) e.getNewValue();
-            update = true;
+            if (e.getNewValue() != null) {
+                file = (File) e.getNewValue();
+                update = true;
+            }
         } else if (JFileChooser.FILE_FILTER_CHANGED_PROPERTY.equals(prop)) {
+            ((SwingScilabExportFileChooser) fc).updateFileName(file);
+
             // Crappy workaround to clear the selection when the filter has changed
             fc.setMultiSelectionEnabled(true);
             fc.setMultiSelectionEnabled(false);
index 6c73714..0673590 100644 (file)
@@ -216,6 +216,24 @@ public class SwingScilabExportFileChooser extends SwingScilabFileChooser {
         return null;
     }
 
+    public void updateFileName(File file) {
+        if (file != null) {
+            String fileName = file.getName();
+            int i = fileName.lastIndexOf('.');
+            if (i != -1) {
+                fileName = fileName.substring(0, i);
+            }
+
+            FileMask ft = (FileMask) super.getFileFilter();
+            String ext = ft.getExtensionFromFilter();
+
+            if (ext != null && !ext.equals(allFiles)) {
+                fileName += "." + ext;
+                setSelectedFile(new File(fileName));
+            }
+        }
+    }
+
     /**
      * Manage the export (bitmap/vectorial format) and export errors
      */