From 205cdc4559c5713441cb1529c18a25be4a639d3e Mon Sep 17 00:00:00 2001 From: Stefan Hahmann Date: Tue, 28 May 2024 18:11:24 +0200 Subject: [PATCH] Make file filter show the extension, instead of cryptic stuff * Override FileFilter toString() method in SwingFileWidget so that it shows the extension(s) that are filtered by the file choose dialog instead of the standard toString() of the * Related to * https://github.com/bigdataviewer/bigdataviewer-playground/issues/110 * https://forum.image.sc/t/scijava-command-file-extensions/29869/2 --- .../ui/swing/widget/SwingFileWidget.java | 16 ++++++++++++++ .../ui/swing/widget/SwingFileWidgetTest.java | 21 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 src/test/java/org/scijava/ui/swing/widget/SwingFileWidgetTest.java diff --git a/src/main/java/org/scijava/ui/swing/widget/SwingFileWidget.java b/src/main/java/org/scijava/ui/swing/widget/SwingFileWidget.java index f669e39..224f593 100644 --- a/src/main/java/org/scijava/ui/swing/widget/SwingFileWidget.java +++ b/src/main/java/org/scijava/ui/swing/widget/SwingFileWidget.java @@ -40,6 +40,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.StringJoiner; import java.util.stream.Collectors; import javax.swing.Box; @@ -235,9 +236,24 @@ public boolean accept(final File pathname) { } return false; } + + @Override + public String toString() { + return formatFileFilterExtensions( exts ); + } }; } + static String formatFileFilterExtensions( final List< String > extensions ) { + List< String > extsWithPrefix = new ArrayList<>(); + for ( String extension : extensions ) { + extsWithPrefix.add( "*." + extension ); + } + StringJoiner joiner = new StringJoiner( ";" ); + extsWithPrefix.forEach( joiner::add ); + return joiner.toString(); + } + /** * Checks whether the given drag and drop operation offers a list of files as * one of its flavors. diff --git a/src/test/java/org/scijava/ui/swing/widget/SwingFileWidgetTest.java b/src/test/java/org/scijava/ui/swing/widget/SwingFileWidgetTest.java new file mode 100644 index 0000000..d03a797 --- /dev/null +++ b/src/test/java/org/scijava/ui/swing/widget/SwingFileWidgetTest.java @@ -0,0 +1,21 @@ +package org.scijava.ui.swing.widget; + +import org.junit.Test; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import static org.junit.Assert.assertEquals; + +public class SwingFileWidgetTest +{ + + @Test + public void testFormatFileFilterExtensions() { + final List< String > multipleExtensions = Arrays.asList( "jpg", "jpeg", "png", "gif", "bmp" ); + final List< String > singleExtension = Collections.singletonList( "xml" ); + assertEquals( "*.jpg;*.jpeg;*.png;*.gif;*.bmp", SwingFileWidget.formatFileFilterExtensions( multipleExtensions ) ); + assertEquals( "*.xml", SwingFileWidget.formatFileFilterExtensions( singleExtension ) ); + } +}