Skip to content

Commit 114db77

Browse files
committed
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 * bigdataviewer/bigdataviewer-playground#110 * https://forum.image.sc/t/scijava-command-file-extensions/29869/2
1 parent 2770bbf commit 114db77

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

src/main/java/org/scijava/ui/swing/widget/SwingFileWidget.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import java.util.ArrayList;
4141
import java.util.Arrays;
4242
import java.util.List;
43+
import java.util.StringJoiner;
4344
import java.util.stream.Collectors;
4445

4546
import javax.swing.Box;
@@ -235,9 +236,26 @@ public boolean accept(final File pathname) {
235236
}
236237
return false;
237238
}
239+
240+
@Override
241+
public String toString()
242+
{
243+
return formatFileFilterExtensions( exts );
244+
}
238245
};
239246
}
240247

248+
static String formatFileFilterExtensions( final List< String > extensions )
249+
{
250+
List< String > extsWithPrefix = new ArrayList<>();
251+
for ( String extension : extensions )
252+
extsWithPrefix.add( "*." + extension );
253+
254+
StringJoiner joiner = new StringJoiner( ";" );
255+
extsWithPrefix.forEach( joiner::add );
256+
return joiner.toString();
257+
}
258+
241259
/**
242260
* Checks whether the given drag and drop operation offers a list of files as
243261
* one of its flavors.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.scijava.ui.swing.widget;
2+
3+
import junit.framework.TestCase;
4+
5+
import java.util.Arrays;
6+
import java.util.Collections;
7+
import java.util.List;
8+
9+
public class SwingFileWidgetTest extends TestCase
10+
{
11+
12+
public void testFormatFileFilterExtensions()
13+
{
14+
final List< String > multipleExtensions = Arrays.asList( "jpg", "jpeg", "png", "gif", "bmp" );
15+
final List< String > singleExtension = Collections.singletonList( "xml" );
16+
assertEquals( "*.jpg;*.jpeg;*.png;*.gif;*.bmp", SwingFileWidget.formatFileFilterExtensions( multipleExtensions ) );
17+
assertEquals( "*.xml", SwingFileWidget.formatFileFilterExtensions( singleExtension ) );
18+
}
19+
}

0 commit comments

Comments
 (0)