Skip to content

Commit

Permalink
Make the default filters public
Browse files Browse the repository at this point in the history
This adds methods on the JWFileChoosersType interface that provide
access to the default "all files" and "all directories" filters.

Fix: #10
  • Loading branch information
io7m committed Apr 10, 2021
1 parent ff6ae87 commit b65b73c
Show file tree
Hide file tree
Showing 6 changed files with 82 additions and 17 deletions.
9 changes: 7 additions & 2 deletions README-CHANGES.xml
Expand Up @@ -39,7 +39,7 @@
<c:change date="2020-04-10T00:00:00+00:00" summary="Enable CheckStyle to enforce code style"/>
</c:changes>
</c:release>
<c:release date="2021-04-10T21:29:16+00:00" is-open="true" ticket-system="com.github.io7m.jwheatsheaf" version="3.0.0">
<c:release date="2021-04-10T21:48:15+00:00" is-open="true" ticket-system="com.github.io7m.jwheatsheaf" version="3.0.0">
<c:changes>
<c:change date="2021-04-10T00:00:00+00:00" summary="Allow the escape key to close file choosers">
<c:tickets>
Expand All @@ -51,11 +51,16 @@
<c:ticket id="15"/>
</c:tickets>
</c:change>
<c:change date="2021-04-10T21:29:16+00:00" summary="Allow for specifying custom dialog titles">
<c:change date="2021-04-10T00:00:00+00:00" summary="Allow for specifying custom dialog titles">
<c:tickets>
<c:ticket id="8"/>
</c:tickets>
</c:change>
<c:change date="2021-04-10T21:48:15+00:00" summary="Make the default filters part of the public API">
<c:tickets>
<c:ticket id="10"/>
</c:tickets>
</c:change>
</c:changes>
</c:release>
</c:releases>
Expand Down
Expand Up @@ -42,4 +42,16 @@ JWFileChooserType create(
Window window,
JWFileChooserConfiguration configuration
);

/**
* @return A filter that allows access to all files
*/

JWFileChooserFilterType filterForAllFiles();

/**
* @return A filter that only allows access to directories
*/

JWFileChooserFilterType filterForOnlyDirectories();
}
Expand Up @@ -17,16 +17,20 @@
package com.io7m.jwheatsheaf.tests;

import com.io7m.jwheatsheaf.api.JWFileChooserFilterType;
import com.io7m.jwheatsheaf.api.JWFileChoosersType;
import com.io7m.jwheatsheaf.api.JWFileKind;
import com.io7m.jwheatsheaf.ui.JWFileChoosers;
import com.io7m.jwheatsheaf.ui.internal.JWFileChooserFilterAllFiles;
import com.io7m.jwheatsheaf.ui.internal.JWFileChooserFilterOnlyDirectories;
import com.io7m.jwheatsheaf.ui.internal.JWFileItem;
import com.io7m.jwheatsheaf.ui.internal.JWFileList;
import com.io7m.jwheatsheaf.ui.internal.JWStrings;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.FileTime;
Expand All @@ -39,16 +43,16 @@ public final class JWFileListTest
private JWFileItem item1;
private JWFileItem item2;
private List<JWFileItem> baseItems;
private JWFileChooserFilterType filterAll;
private JWStrings strings;
private JWFileChoosersType choosers;

@BeforeEach
public void testSetup()
{
this.strings =
JWStrings.of(JWStrings.getResourceBundle());
this.filterAll =
JWFileChooserFilterAllFiles.create(this.strings);
this.choosers =
JWFileChoosers.create();

this.item0 =
JWFileItem.builder()
Expand Down Expand Up @@ -76,10 +80,17 @@ public void testSetup()
List.of(this.item0, this.item1, this.item2);
}

@AfterEach
public void testShutdown()
throws IOException
{
this.choosers.close();
}

@Test
public void testListBase()
{
final var items = new JWFileList(this.filterAll);
final var items = new JWFileList(this.choosers.filterForAllFiles());

items.setItems(this.baseItems);
Assertions.assertEquals(this.baseItems, items.items());
Expand All @@ -88,7 +99,7 @@ public void testListBase()
@Test
public void testListSearch()
{
final var items = new JWFileList(this.filterAll);
final var items = new JWFileList(this.choosers.filterForAllFiles());

items.setItems(this.baseItems);
items.setSearch("x");
Expand All @@ -100,7 +111,7 @@ public void testListSearch()
@Test
public void testListFilter()
{
final var items = new JWFileList(this.filterAll);
final var items = new JWFileList(this.choosers.filterForAllFiles());

items.setItems(this.baseItems);
items.setFilter(new JWFileChooserFilterType()
Expand All @@ -119,19 +130,19 @@ public boolean isAllowed(final Path path)
});

Assertions.assertEquals(List.of(this.item1), items.items());
items.setFilter(this.filterAll);
items.setFilter(this.choosers.filterForAllFiles());
Assertions.assertEquals(this.baseItems, items.items());
}

@Test
public void testListFilterDirectories()
{
final var items = new JWFileList(this.filterAll);
final var items = new JWFileList(this.choosers.filterForAllFiles());

items.setItems(this.baseItems);
items.setFilter(JWFileChooserFilterOnlyDirectories.create(this.strings));
Assertions.assertEquals(List.of(), items.items());
items.setFilter(this.filterAll);
items.setFilter(this.choosers.filterForAllFiles());
Assertions.assertEquals(this.baseItems, items.items());
}
}
Expand Up @@ -17,9 +17,12 @@
package com.io7m.jwheatsheaf.ui;

import com.io7m.jwheatsheaf.api.JWFileChooserConfiguration;
import com.io7m.jwheatsheaf.api.JWFileChooserFilterType;
import com.io7m.jwheatsheaf.api.JWFileChooserType;
import com.io7m.jwheatsheaf.api.JWFileChoosersType;
import com.io7m.jwheatsheaf.api.JWFileImageSetType;
import com.io7m.jwheatsheaf.ui.internal.JWFileChooserFilterAllFiles;
import com.io7m.jwheatsheaf.ui.internal.JWFileChooserFilterOnlyDirectories;
import com.io7m.jwheatsheaf.ui.internal.JWFileChooserViewController;
import com.io7m.jwheatsheaf.ui.internal.JWFileChoosersTesting;
import com.io7m.jwheatsheaf.ui.internal.JWFileImageDefaultSet;
Expand Down Expand Up @@ -51,18 +54,26 @@ public final class JWFileChoosers implements JWFileChoosersType
private final ExecutorService ioExecutor;
private final JWFileImageDefaultSet imageSet;
private final JWStrings strings;
private final JWFileChooserFilterType filterAllFiles;
private final JWFileChooserFilterType filterOnlyDirectories;

private JWFileChoosers(
final JWStrings inStrings,
final JWFileChoosersTesting inTesting,
final ExecutorService inIoExecutor)
final ExecutorService inIoExecutor,
final JWFileChooserFilterType inFilterAllFiles,
final JWFileChooserFilterType inFilterOnlyDirectories)
{
this.strings =
Objects.requireNonNull(inStrings, "inStrings");
this.testing =
Objects.requireNonNull(inTesting, "testing");
this.ioExecutor =
Objects.requireNonNull(inIoExecutor, "ioExecutor");
this.filterAllFiles =
Objects.requireNonNull(inFilterAllFiles, "filterAllFiles");
this.filterOnlyDirectories =
Objects.requireNonNull(inFilterOnlyDirectories, "filterOnlyDirectories");
this.imageSet =
new JWFileImageDefaultSet();
}
Expand Down Expand Up @@ -115,8 +126,16 @@ public static JWFileChoosersType createWithTesting(
final JWFileChoosersTesting testing,
final Locale locale)
{
final var strings = JWStrings.of(JWStrings.getResourceBundle(locale));
return new JWFileChoosers(strings, testing, executor);
final var strings =
JWStrings.of(JWStrings.getResourceBundle(locale));

return new JWFileChoosers(
strings,
testing,
executor,
JWFileChooserFilterAllFiles.create(strings),
JWFileChooserFilterOnlyDirectories.create(strings)
);
}

/**
Expand All @@ -138,7 +157,13 @@ public static JWFileChoosersType createWith(
JWFileChoosersTesting.builder()
.build();

return new JWFileChoosers(strings, testing, executor);
return new JWFileChoosers(
strings,
testing,
executor,
JWFileChooserFilterAllFiles.create(strings),
JWFileChooserFilterOnlyDirectories.create(strings)
);
}

@Override
Expand Down Expand Up @@ -214,6 +239,18 @@ public JWFileChooserType create(
}
}

@Override
public JWFileChooserFilterType filterForAllFiles()
{
return this.filterAllFiles;
}

@Override
public JWFileChooserFilterType filterForOnlyDirectories()
{
return this.filterOnlyDirectories;
}

@Override
public void close()
{
Expand Down
Expand Up @@ -106,7 +106,7 @@ public final class JWFileChooserViewController
private JWFileChoosersTesting testing;
private JWStrings strings;
private JWToolTips toolTips;
private BlockingDeque<String> initialFilename;
private final BlockingDeque<String> initialFilename;

/**
* Construct a view controller.
Expand Down
Expand Up @@ -19,7 +19,7 @@
*/

@Export
@Version("2.0.0")
@Version("2.1.0")
package com.io7m.jwheatsheaf.ui;

import org.osgi.annotation.bundle.Export;
Expand Down

0 comments on commit b65b73c

Please sign in to comment.