You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2021/11/09 17:58:43 UTC
[sis] 03/05: Fix a problem of TIFF files not shown when the "tiff"
extension is upper-case.
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 <ma...@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);
}
/**