This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit 30629e9156ce3c1a7b90d28e94249e908d810375
Author: Martin Desruisseaux <martin.desruisse...@geomatys.com>
AuthorDate: Tue Nov 9 17:16:51 2021 +0100

    Fix a problem of TIFF files not shown when the "tiff" extension is 
upper-case.
---
 .../main/java/org/apache/sis/gui/DataViewer.java   | 43 +++++++++++++---------
 1 file changed, 26 insertions(+), 17 deletions(-)

diff --git 
a/application/sis-javafx/src/main/java/org/apache/sis/gui/DataViewer.java 
b/application/sis-javafx/src/main/java/org/apache/sis/gui/DataViewer.java
index 539081d..29b6da0 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/DataViewer.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/DataViewer.java
@@ -212,6 +212,7 @@ public class DataViewer extends Application {
      */
     private void createFileFilters() {
         final Resources res = Resources.getInstance();
+        final Set<String>    suffixes = new LinkedHashSet<>();
         final Set<String> allSuffixes = new LinkedHashSet<>();
         final List<FileChooser.ExtensionFilter> open = new ArrayList<>();
         final List<FileChooser.ExtensionFilter> save = new ArrayList<>();
@@ -223,21 +224,29 @@ public class DataViewer extends Application {
         for (DataStoreProvider provider : DataStores.providers()) {
             final StoreMetadata md = 
provider.getClass().getAnnotation(StoreMetadata.class);
             if (md != null) {
-                final String[] suffixes = md.fileSuffixes();
-                if (suffixes.length != 0) {
-                    final boolean canOpen = 
ArraysExt.contains(md.capabilities(), Capability.READ);
-                    final boolean canSave = 
ArraysExt.contains(md.capabilities(), Capability.WRITE);
-                    for (int i=0; i < suffixes.length; i++) {
-                        final String fs = "*.".concat(suffixes[i]);
-                        suffixes[i] = fs;
-                        if (canOpen) {
-                            allSuffixes.add(fs);
-                        }
-                    }
+                String label = null;
+                for (final String suffix : md.fileSuffixes()) {
+                    final String fs = "*.".concat(suffix);
+                    suffixes.add(fs);
+                    suffixes.add(fs.toUpperCase());       // Locale-dependent 
conversion is okay.
+                    if (label == null) label = fs;
+                }
+                if (label != null) {
                     final FileChooser.ExtensionFilter f = new 
FileChooser.ExtensionFilter(
-                                    md.formatName() + " (" + suffixes[0] + 
')', suffixes);
-                    if (canOpen) open.add(f);
-                    if (canSave) save.add(f);
+                            md.formatName() + " (" + label + ')', 
suffixes.toArray(String[]::new));
+                    /*
+                     * We use two lists depending on whether the `DataStore` 
can read, write or
+                     * do both. The "All formats" choice is relevant only for 
read operations.
+                     */
+                    final Capability[] capabilities = md.capabilities();
+                    if (ArraysExt.contains(capabilities, Capability.READ)) {
+                        allSuffixes.addAll(suffixes);
+                        open.add(f);
+                    }
+                    if (ArraysExt.contains(capabilities, Capability.WRITE)) {
+                        save.add(f);
+                    }
+                    suffixes.clear();
                 }
             }
         }
@@ -246,9 +255,9 @@ public class DataViewer extends Application {
          * the filters for specific formats. This will be the default filter 
for the "Open" action.
          */
         open.add(1, new 
FileChooser.ExtensionFilter(res.getString(Resources.Keys.GeospatialFiles),
-                            allSuffixes.toArray(new 
String[allSuffixes.size()])));
-        this.openFilters = open.toArray(new 
FileChooser.ExtensionFilter[open.size()]);
-        this.saveFilters = save.toArray(new 
FileChooser.ExtensionFilter[save.size()]);
+                                                    
allSuffixes.toArray(String[]::new)));
+        openFilters = open.toArray(FileChooser.ExtensionFilter[]::new);
+        saveFilters = save.toArray(FileChooser.ExtensionFilter[]::new);
     }
 
     /**

Reply via email to