From ce550b84329cecc9847a1403c8df724fd6e4c5dd Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sun, 24 May 2020 19:58:29 +0000 Subject: [PATCH 01/63] Use latest primogenitor --- README.md | 2 +- pom.xml | 2 +- src/site/resources/jwheatsheaf.jpg | Bin 79430 -> 256788 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f54d967..5e558e4 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ jwheatsheaf === -[![Travis](https://img.shields.io/travis/com/io7m/jwheatsheaf?style=flat-square)](https://travis-ci.com/io7m/jwheatsheaf) +[![Travis](https://img.shields.io/travis/io7m/jwheatsheaf.png?style=flat-square)](https://travis-ci.org/io7m/jwheatsheaf) [![Maven Central](https://img.shields.io/maven-central/v/com.io7m.jwheatsheaf/com.io7m.jwheatsheaf.png?style=flat-square)](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.io7m.jwheatsheaf%22) [![Maven Central (snapshot)](https://img.shields.io/nexus/s/https/oss.sonatype.org/com.io7m.jwheatsheaf/com.io7m.jwheatsheaf.svg?style=flat-square)](https://oss.sonatype.org/content/repositories/snapshots/com/io7m/jwheatsheaf/) [![Codacy grade](https://img.shields.io/codacy/grade/b0ab224c1aa641afbe9d0d34b1f60f1d.png?style=flat-square)](https://www.codacy.com/app/github_79/jwheatsheaf) diff --git a/pom.xml b/pom.xml index be28fde..059f4ee 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ com.io7m.primogenitor com.io7m.primogenitor.full - 4.0.1 + 5.0.0 com.io7m.jwheatsheaf diff --git a/src/site/resources/jwheatsheaf.jpg b/src/site/resources/jwheatsheaf.jpg index dd85c5732eee0c8439da48a9e44bcdbd90de6a21..1a8f4faf423913dad27910579132cee9f818c0a7 100644 GIT binary patch literal 256788 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 E0R!_kQ2+n{ From 24214c1b6dd353336fd9b7a9d604da3173442fea Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sun, 4 Oct 2020 17:52:59 +0000 Subject: [PATCH 02/63] Move to GitHub Actions --- .../workflows/main-openjdk_current-linux.yml | 19 ++++++++++++++ .../main-openjdk_current-windows.yml | 19 ++++++++++++++ .github/workflows/main-openjdk_lts-linux.yml | 23 +++++++++++++++++ .travis.yml | 25 ------------------- README.md | 12 ++++++--- pom.xml | 8 +++--- 6 files changed, 73 insertions(+), 33 deletions(-) create mode 100644 .github/workflows/main-openjdk_current-linux.yml create mode 100644 .github/workflows/main-openjdk_current-windows.yml create mode 100644 .github/workflows/main-openjdk_lts-linux.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/main-openjdk_current-linux.yml b/.github/workflows/main-openjdk_current-linux.yml new file mode 100644 index 0000000..df861c3 --- /dev/null +++ b/.github/workflows/main-openjdk_current-linux.yml @@ -0,0 +1,19 @@ +name: main-openjdk_current-linux + +on: + push: + branches: [ develop, feature/*, release/* ] + pull_request: + branches: [ develop ] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: JDK + uses: actions/setup-java@v1 + with: + java-version: 15 + - name: Build + run: mvn --errors clean verify site diff --git a/.github/workflows/main-openjdk_current-windows.yml b/.github/workflows/main-openjdk_current-windows.yml new file mode 100644 index 0000000..fdade96 --- /dev/null +++ b/.github/workflows/main-openjdk_current-windows.yml @@ -0,0 +1,19 @@ +name: main-openjdk_current-windows + +on: + push: + branches: [ develop, feature/*, release/* ] + pull_request: + branches: [ develop ] + +jobs: + build: + runs-on: windows-latest + steps: + - uses: actions/checkout@v2 + - name: JDK + uses: actions/setup-java@v1 + with: + java-version: 15 + - name: Build + run: mvn --errors clean verify site diff --git a/.github/workflows/main-openjdk_lts-linux.yml b/.github/workflows/main-openjdk_lts-linux.yml new file mode 100644 index 0000000..bc0c5cb --- /dev/null +++ b/.github/workflows/main-openjdk_lts-linux.yml @@ -0,0 +1,23 @@ +name: main-openjdk_lts-linux + +on: + push: + branches: [ develop, feature/*, release/* ] + pull_request: + branches: [ develop ] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: JDK + uses: actions/setup-java@v1 + with: + java-version: 11 + - name: Build + run: mvn --errors clean verify site + - name: Coverage + uses: codecov/codecov-action@v1 + with: + file: com.io7m.blackthorne.tests/target/site/jacoco/jacoco.xml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 61a60c4..0000000 --- a/.travis.yml +++ /dev/null @@ -1,25 +0,0 @@ -language: java - -jdk: - - oraclejdk11 - - openjdk11 - -dist: trusty - -before_install: - - wget https://archive.apache.org/dist/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.zip - - unzip -qq apache-maven-3.6.2-bin.zip - - export M2_HOME=$PWD/apache-maven-3.6.2 - - export PATH=$M2_HOME/bin:$PATH - - export DISPLAY=:99.0 - - sh -e /etc/init.d/xvfb start - -install: true - -script: - - mvn --errors clean verify site - - bash <(curl -s https://codecov.io/bash) -f ./com.io7m.jwheatsheaf.tests/target/site/jacoco-aggregate/jacoco.xml - -notifications: - irc: "chat.freenode.net#io7m" - diff --git a/README.md b/README.md index 5e558e4..323195a 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,15 @@ jwheatsheaf === -[![Travis](https://img.shields.io/travis/io7m/jwheatsheaf.png?style=flat-square)](https://travis-ci.org/io7m/jwheatsheaf) -[![Maven Central](https://img.shields.io/maven-central/v/com.io7m.jwheatsheaf/com.io7m.jwheatsheaf.png?style=flat-square)](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.io7m.jwheatsheaf%22) +[![Maven Central](https://img.shields.io/maven-central/v/com.io7m.jwheatsheaf/com.io7m.jwheatsheaf.svg?style=flat-square)](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.io7m.jwheatsheaf%22) [![Maven Central (snapshot)](https://img.shields.io/nexus/s/https/oss.sonatype.org/com.io7m.jwheatsheaf/com.io7m.jwheatsheaf.svg?style=flat-square)](https://oss.sonatype.org/content/repositories/snapshots/com/io7m/jwheatsheaf/) -[![Codacy grade](https://img.shields.io/codacy/grade/b0ab224c1aa641afbe9d0d34b1f60f1d.png?style=flat-square)](https://www.codacy.com/app/github_79/jwheatsheaf) -[![Codecov](https://img.shields.io/codecov/c/github/io7m/jwheatsheaf.png?style=flat-square)](https://codecov.io/gh/io7m/jwheatsheaf) +[![Codecov](https://img.shields.io/codecov/c/github/io7m/jwheatsheaf.svg?style=flat-square)](https://codecov.io/gh/io7m/jwheatsheaf) ![jwheatsheaf](./src/site/resources/jwheatsheaf.jpg?raw=true) +| JVM | Platform | Status | +|-----------------|----------|--------| +| OpenJDK LTS | Linux | [![Build (OpenJDK LTS, Linux)](https://img.shields.io/github/workflow/status/io7m/jwheatsheaf/main-openjdk_lts-linux)](https://github.com/io7m/jwheatsheaf/actions?query=workflow%3Amain-openjdk_lts-linux) | +| OpenJDK Current | Linux | [![Build (OpenJDK Current, Linux)](https://img.shields.io/github/workflow/status/io7m/jwheatsheaf/main-openjdk_current-linux)](https://github.com/io7m/jwheatsheaf/actions?query=workflow%3Amain-openjdk_current-linux) +| OpenJDK Current | Windows | [![Build (OpenJDK Current, Windows)](https://img.shields.io/github/workflow/status/io7m/jwheatsheaf/main-openjdk_current-windows)](https://github.com/io7m/jwheatsheaf/actions?query=workflow%3Amain-openjdk_current-windows) + diff --git a/pom.xml b/pom.xml index 059f4ee..135c52c 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ com.io7m.primogenitor com.io7m.primogenitor.full - 5.0.0 + 6.0.0-beta0004 com.io7m.jwheatsheaf @@ -85,8 +85,8 @@ - Travis CI - https://travis-ci.org/io7m/jwheatsheaf + GitHub Actions + https://github.com/jwheatsheaf/actions @@ -194,7 +194,7 @@ com.io7m.primogenitor com.io7m.primogenitor.support - 4.0.1 + 6.0.0-beta0004 From 76c65bcfa38cba94fa6fb3211c7a6a1e0e533e30 Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sun, 4 Oct 2020 18:05:49 +0000 Subject: [PATCH 03/63] Update site overview --- src/site/resources/overview.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/site/resources/overview.xml b/src/site/resources/overview.xml index f928b33..aec69df 100644 --- a/src/site/resources/overview.xml +++ b/src/site/resources/overview.xml @@ -8,10 +8,6 @@ Maven Central - - Codacy - Codecov From e8b2e4528401952b36bf7d8ad62681b80ba6316b Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sun, 4 Oct 2020 18:35:08 +0000 Subject: [PATCH 04/63] Update site overview --- src/site/resources/overview.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/site/resources/overview.xml b/src/site/resources/overview.xml index aec69df..49c0ee7 100644 --- a/src/site/resources/overview.xml +++ b/src/site/resources/overview.xml @@ -1,9 +1,9 @@

    - - Build status - + + Build status + Maven Central From 844edbcdace5025aa6346520ae602b07907f2da3 Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sun, 4 Oct 2020 20:16:38 +0000 Subject: [PATCH 05/63] Update primogenitor --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 135c52c..c9db079 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ com.io7m.primogenitor com.io7m.primogenitor.full - 6.0.0-beta0004 + 6.0.0 com.io7m.jwheatsheaf @@ -194,7 +194,7 @@ com.io7m.primogenitor com.io7m.primogenitor.support - 6.0.0-beta0004 + 6.0.0 From d17a2563d3a67cd4c73c0b349383420f7bdfc694 Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Fri, 11 Dec 2020 14:41:13 +0000 Subject: [PATCH 06/63] Use primogenitor 6.1.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c9db079..0f3808e 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ com.io7m.primogenitor com.io7m.primogenitor.full - 6.0.0 + 6.1.0 com.io7m.jwheatsheaf From 0c96698d9e73b357b3ca4d670ad198d860e66bc9 Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Fri, 11 Dec 2020 15:13:18 +0000 Subject: [PATCH 07/63] Empty commit to trigger CI build From e05bbcac8decac0f3e2a0faa6a090bc5330c0dfe Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Mon, 28 Dec 2020 12:13:09 +0000 Subject: [PATCH 08/63] Update workflow --- .github/workflows/main-openjdk_lts-linux.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main-openjdk_lts-linux.yml b/.github/workflows/main-openjdk_lts-linux.yml index bc0c5cb..de18d3c 100644 --- a/.github/workflows/main-openjdk_lts-linux.yml +++ b/.github/workflows/main-openjdk_lts-linux.yml @@ -20,4 +20,4 @@ jobs: - name: Coverage uses: codecov/codecov-action@v1 with: - file: com.io7m.blackthorne.tests/target/site/jacoco/jacoco.xml + file: com.io7m.jwheatsheaf.tests/target/site/jacoco/jacoco.xml From 2deabe2e33d5e23a5030df52ee988dac7964a25a Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Mon, 28 Dec 2020 13:12:34 +0000 Subject: [PATCH 09/63] Update primogenitor --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 0f3808e..74de05c 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ com.io7m.primogenitor com.io7m.primogenitor.full - 6.1.0 + 6.2.0 com.io7m.jwheatsheaf @@ -194,7 +194,7 @@ com.io7m.primogenitor com.io7m.primogenitor.support - 6.0.0 + 6.2.0 From 8534a4ae9c55c8e9ddcd6e65b5c1f4d77d58b8a9 Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sun, 4 Apr 2021 09:39:30 +0000 Subject: [PATCH 10/63] Update primogenitor --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 74de05c..694c2ed 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ com.io7m.primogenitor com.io7m.primogenitor.full - 6.2.0 + 6.3.0 com.io7m.jwheatsheaf @@ -194,7 +194,7 @@ com.io7m.primogenitor com.io7m.primogenitor.support - 6.2.0 + 6.3.0 From 5d07d44760cef95c4328ca03bee7ff8ca30e23d2 Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sun, 4 Apr 2021 10:07:35 +0000 Subject: [PATCH 11/63] Empty commit to trigger CI From 9c341781a8dc13a7aed68e9b9519beb53e0bb1fb Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sun, 4 Apr 2021 11:26:31 +0000 Subject: [PATCH 12/63] Empty commit to trigger CI From 405146d9e779b137fa2d09bab745b179b5684263 Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Thu, 8 Apr 2021 20:52:21 +0000 Subject: [PATCH 13/63] Begin next development iteration --- com.io7m.jwheatsheaf.api/pom.xml | 2 +- com.io7m.jwheatsheaf.documentation/pom.xml | 2 +- com.io7m.jwheatsheaf.examples/pom.xml | 2 +- com.io7m.jwheatsheaf.oxygen/pom.xml | 2 +- com.io7m.jwheatsheaf.tests/pom.xml | 2 +- com.io7m.jwheatsheaf.ui/pom.xml | 2 +- pom.xml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/com.io7m.jwheatsheaf.api/pom.xml b/com.io7m.jwheatsheaf.api/pom.xml index e5b209d..48ddaf2 100644 --- a/com.io7m.jwheatsheaf.api/pom.xml +++ b/com.io7m.jwheatsheaf.api/pom.xml @@ -9,7 +9,7 @@ com.io7m.jwheatsheaf com.io7m.jwheatsheaf - 2.0.1 + 2.0.2-SNAPSHOT com.io7m.jwheatsheaf.api diff --git a/com.io7m.jwheatsheaf.documentation/pom.xml b/com.io7m.jwheatsheaf.documentation/pom.xml index 572686d..18f72ab 100644 --- a/com.io7m.jwheatsheaf.documentation/pom.xml +++ b/com.io7m.jwheatsheaf.documentation/pom.xml @@ -9,7 +9,7 @@ com.io7m.jwheatsheaf com.io7m.jwheatsheaf - 2.0.1 + 2.0.2-SNAPSHOT com.io7m.jwheatsheaf.documentation diff --git a/com.io7m.jwheatsheaf.examples/pom.xml b/com.io7m.jwheatsheaf.examples/pom.xml index 112bba4..550c28a 100644 --- a/com.io7m.jwheatsheaf.examples/pom.xml +++ b/com.io7m.jwheatsheaf.examples/pom.xml @@ -9,7 +9,7 @@ com.io7m.jwheatsheaf com.io7m.jwheatsheaf - 2.0.1 + 2.0.2-SNAPSHOT com.io7m.jwheatsheaf.examples diff --git a/com.io7m.jwheatsheaf.oxygen/pom.xml b/com.io7m.jwheatsheaf.oxygen/pom.xml index 379d918..99b8c48 100644 --- a/com.io7m.jwheatsheaf.oxygen/pom.xml +++ b/com.io7m.jwheatsheaf.oxygen/pom.xml @@ -9,7 +9,7 @@ com.io7m.jwheatsheaf com.io7m.jwheatsheaf - 2.0.1 + 2.0.2-SNAPSHOT com.io7m.jwheatsheaf.oxygen diff --git a/com.io7m.jwheatsheaf.tests/pom.xml b/com.io7m.jwheatsheaf.tests/pom.xml index 815e3bd..eea7dd7 100644 --- a/com.io7m.jwheatsheaf.tests/pom.xml +++ b/com.io7m.jwheatsheaf.tests/pom.xml @@ -9,7 +9,7 @@ com.io7m.jwheatsheaf com.io7m.jwheatsheaf - 2.0.1 + 2.0.2-SNAPSHOT com.io7m.jwheatsheaf.tests diff --git a/com.io7m.jwheatsheaf.ui/pom.xml b/com.io7m.jwheatsheaf.ui/pom.xml index 21130e8..97e52c0 100644 --- a/com.io7m.jwheatsheaf.ui/pom.xml +++ b/com.io7m.jwheatsheaf.ui/pom.xml @@ -9,7 +9,7 @@ com.io7m.jwheatsheaf com.io7m.jwheatsheaf - 2.0.1 + 2.0.2-SNAPSHOT com.io7m.jwheatsheaf.ui diff --git a/pom.xml b/pom.xml index 694c2ed..5839717 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,7 @@ com.io7m.jwheatsheaf com.io7m.jwheatsheaf - 2.0.1 + 2.0.2-SNAPSHOT pom com.io7m.jwheatsheaf From 6695ae720cc52b52a0abbaa66bac0ad623a79ab4 Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sat, 10 Apr 2021 11:29:39 +0000 Subject: [PATCH 14/63] Attempt to use xvfb for the test suite on CI --- .github/workflows/main-openjdk_current-linux.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main-openjdk_current-linux.yml b/.github/workflows/main-openjdk_current-linux.yml index df861c3..3336bf2 100644 --- a/.github/workflows/main-openjdk_current-linux.yml +++ b/.github/workflows/main-openjdk_current-linux.yml @@ -15,5 +15,7 @@ jobs: uses: actions/setup-java@v1 with: java-version: 15 + - name: Run headless test + uses: GabrielBB/xvfb-action@v1 - name: Build run: mvn --errors clean verify site From f87d9d3d1f80365bbaecb1e60ee560aed52c9a2f Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sat, 10 Apr 2021 11:32:08 +0000 Subject: [PATCH 15/63] Fix fragile tests This implements a set of changes intended to fix the fragility of the test suite when running under CI. * Upgrade to JavaFX 16 * Run all tests using xvfb * Adjust all test code to avoid timing-sensitive operations Affects: https://github.com/io7m/jwheatsheaf/issues/24 --- .../workflows/main-openjdk_current-linux.yml | 16 +- .../main-openjdk_current-windows.yml | 2 +- .github/workflows/main-openjdk_lts-linux.yml | 14 +- .github/workflows/run-with-xvfb.sh | 27 ++ .github/workflows/wallpaper.jpg | Bin 0 -> 6077 bytes .github/workflows/wallpaper.xcf | Bin 0 -> 173928 bytes com.io7m.jwheatsheaf.tests/pom.xml | 4 + .../tests/JWFileChooserActionSaveTest.java | 75 ++-- .../tests/JWFileChooserSlowIOTest.java | 52 ++- .../jwheatsheaf/tests/JWFileChooserTest.java | 321 ++++++++++++++---- .../jwheatsheaf/tests/JWFileWindowTitles.java | 61 ++++ .../io7m/jwheatsheaf/ui/JWFileChoosers.java | 2 + pom.xml | 12 +- 13 files changed, 479 insertions(+), 107 deletions(-) create mode 100755 .github/workflows/run-with-xvfb.sh create mode 100644 .github/workflows/wallpaper.jpg create mode 100644 .github/workflows/wallpaper.xcf create mode 100644 com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileWindowTitles.java diff --git a/.github/workflows/main-openjdk_current-linux.yml b/.github/workflows/main-openjdk_current-linux.yml index 3336bf2..5d0385a 100644 --- a/.github/workflows/main-openjdk_current-linux.yml +++ b/.github/workflows/main-openjdk_current-linux.yml @@ -15,7 +15,17 @@ jobs: uses: actions/setup-java@v1 with: java-version: 15 - - name: Run headless test - uses: GabrielBB/xvfb-action@v1 - name: Build - run: mvn --errors clean verify site + run: ./.github/workflows/run-with-xvfb.sh mvn --errors clean verify site + - name: Upload video + uses: actions/upload-artifact@v2 + if: ${{ always() }} + with: + name: test-video + path: test-suite.mkv + - name: Upload test logs + uses: actions/upload-artifact@v2 + if: ${{ always() }} + with: + name: test-logs + path: ./com.io7m.jwheatsheaf.tests/target/surefire-reports diff --git a/.github/workflows/main-openjdk_current-windows.yml b/.github/workflows/main-openjdk_current-windows.yml index fdade96..b947ecc 100644 --- a/.github/workflows/main-openjdk_current-windows.yml +++ b/.github/workflows/main-openjdk_current-windows.yml @@ -16,4 +16,4 @@ jobs: with: java-version: 15 - name: Build - run: mvn --errors clean verify site + run: mvn -DskipTests=true --errors clean verify site diff --git a/.github/workflows/main-openjdk_lts-linux.yml b/.github/workflows/main-openjdk_lts-linux.yml index de18d3c..cafdd4e 100644 --- a/.github/workflows/main-openjdk_lts-linux.yml +++ b/.github/workflows/main-openjdk_lts-linux.yml @@ -16,7 +16,19 @@ jobs: with: java-version: 11 - name: Build - run: mvn --errors clean verify site + run: ./.github/workflows/run-with-xvfb.sh mvn --errors clean verify site + - name: Upload video + uses: actions/upload-artifact@v2 + if: ${{ always() }} + with: + name: test-video + path: test-suite.mkv + - name: Upload test logs + uses: actions/upload-artifact@v2 + if: ${{ always() }} + with: + name: test-logs + path: ./com.io7m.jwheatsheaf.tests/target/surefire-reports - name: Coverage uses: codecov/codecov-action@v1 with: diff --git a/.github/workflows/run-with-xvfb.sh b/.github/workflows/run-with-xvfb.sh new file mode 100755 index 0000000..c7f646e --- /dev/null +++ b/.github/workflows/run-with-xvfb.sh @@ -0,0 +1,27 @@ +#!/bin/bash -ex + +exec > >(tee build.txt) 2>&1 + +sudo apt-get -y install xvfb fluxbox feh ffmpeg xterm + +Xvfb :99 & +XVFB_PID="$!" + +export DISPLAY=:99 +sleep 1 + +fluxbox & +sleep 1 +feh --bg-tile .github/workflows/wallpaper.jpg +xterm -geometry 200x40 -e tail -F build.txt & +sleep 1 +feh --bg-tile .github/workflows/wallpaper.jpg +sleep 1 + +ffmpeg -f x11grab -y -r 15 -video_size 1280x1024 -i :99 -vcodec libx264 test-suite.mkv & +FFMPEG_PID="$!" + +"$@" + +sleep 5 +kill -INT "${FFMPEG_PID}" diff --git a/.github/workflows/wallpaper.jpg b/.github/workflows/wallpaper.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eb1739eaffd9a5bea81655277c188e2765ea596d GIT binary patch literal 6077 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.version} + + org.openjfx + javafx-swing + org.testfx testfx-core diff --git a/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserActionSaveTest.java b/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserActionSaveTest.java index 245da5b..8ef3a8d 100644 --- a/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserActionSaveTest.java +++ b/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserActionSaveTest.java @@ -22,16 +22,20 @@ import com.io7m.jwheatsheaf.api.JWFileChooserType; import com.io7m.jwheatsheaf.api.JWFileChoosersType; import com.io7m.jwheatsheaf.ui.JWFileChoosers; +import javafx.application.Platform; import javafx.scene.input.KeyCode; import javafx.stage.Stage; import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Assumptions; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInfo; import org.junit.jupiter.api.extension.ExtendWith; +import org.testfx.api.FxAssert; import org.testfx.api.FxRobot; import org.testfx.framework.junit5.ApplicationExtension; import org.testfx.framework.junit5.Start; import org.testfx.framework.junit5.Stop; +import org.testfx.matcher.base.NodeMatchers; import java.io.IOException; import java.nio.file.FileSystem; @@ -87,50 +91,83 @@ public void stop() /** * In SAVE mode, entering a name unlocks the OK button. + * + * @param robot The FX test robot */ @Test - public void testActionSaveNamed(final FxRobot robot) - throws Exception + public void testActionSaveNamed( + final FxRobot robot, + final TestInfo info) { - robot - .clickOn("#fileChooserNameField") - .write("GCC.EXE") - .type(KeyCode.ENTER) - .clickOn("#fileChooserOKButton"); + JWFileWindowTitles.setTitle(this.chooser, info); + + final var okButton = + robot.lookup("#fileChooserOKButton") + .queryButton(); + + robot.clickOn("#fileChooserNameField"); + + FxAssert.verifyThat(okButton, NodeMatchers.isDisabled()); + robot.write("GCC.EXE"); + FxAssert.verifyThat(okButton, NodeMatchers.isEnabled()); + + robot.type(KeyCode.ENTER); + FxAssert.verifyThat(okButton, NodeMatchers.isEnabled()); + + FxAssert.verifyThat(okButton, NodeMatchers.isEnabled()); + robot.clickOn(okButton); Assertions.assertEquals( List.of("Z:\\USERS\\GROUCH\\GCC.EXE"), this.chooser.result() .stream() .map(Path::toString) - .collect(Collectors.toList())); + .collect(Collectors.toList()) + ); Assertions.assertEquals(0, this.events.size()); } /** * The enter directly dialog works. + * + * @param robot The FX test robot */ @Test - public void testDirectorySelectDirect(final FxRobot robot) - throws IOException + public void testDirectorySelectDirect( + final FxRobot robot, + final TestInfo info) { - // Test is fragile when run on Travis CI - Assumptions.assumeFalse(JWFileChooserTest.isTravisCI()); + JWFileWindowTitles.setTitle(this.chooser, info); + + final var okButton = + robot.lookup("#fileChooserOKButton") + .queryButton(); + + final var selectButton = + robot.lookup("#fileChooserSelectDirectButton") + .queryButton(); + + FxAssert.verifyThat(okButton, NodeMatchers.isDisabled()); + robot.clickOn(selectButton); + + FxAssert.verifyThat(okButton, NodeMatchers.isDisabled()); + robot.write("Y:\\NEWFILE.TXT"); + + FxAssert.verifyThat(okButton, NodeMatchers.isDisabled()); + robot.type(KeyCode.ENTER); - robot - .clickOn("#fileChooserSelectDirectButton") - .write("Y:\\NEWFILE.TXT") - .type(KeyCode.ENTER) - .clickOn("#fileChooserOKButton"); + FxAssert.verifyThat(okButton, NodeMatchers.isEnabled()); + robot.clickOn(okButton); Assertions.assertEquals( List.of("Y:\\NEWFILE.TXT"), this.chooser.result() .stream() .map(Path::toString) - .collect(Collectors.toList())); + .collect(Collectors.toList()) + ); Assertions.assertEquals(0, this.events.size()); } } diff --git a/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserSlowIOTest.java b/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserSlowIOTest.java index 654ea8d..52e11db 100644 --- a/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserSlowIOTest.java +++ b/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserSlowIOTest.java @@ -26,13 +26,16 @@ import javafx.stage.Stage; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInfo; import org.junit.jupiter.api.extension.ExtendWith; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.testfx.api.FxAssert; import org.testfx.api.FxRobot; import org.testfx.framework.junit5.ApplicationExtension; import org.testfx.framework.junit5.Start; import org.testfx.framework.junit5.Stop; +import org.testfx.matcher.base.NodeMatchers; import java.io.IOException; import java.nio.file.FileSystem; @@ -44,9 +47,12 @@ import java.util.List; import java.util.Locale; import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; +import static java.util.concurrent.TimeUnit.SECONDS; +import static org.testfx.util.WaitForAsyncUtils.waitFor; + @ExtendWith(ApplicationExtension.class) public final class JWFileChooserSlowIOTest { @@ -105,24 +111,52 @@ public void stop() /** * Clicking the first row of the directory table yields a directory, and * clicking the OK button selects it. + * + * @param robot The FX test robot */ @Test - public void testDirectorySelect(final FxRobot robot) + public void testDirectorySelect( + final FxRobot robot, + final TestInfo info) + throws TimeoutException { - robot - .sleep(2L, TimeUnit.SECONDS) - .doubleClickOn("Z:\\") - .sleep(2L, TimeUnit.SECONDS) - .clickOn("USERS") - .clickOn("#fileChooserOKButton"); + JWFileWindowTitles.setTitle(this.chooser, info); + + final var okButton = + robot.lookup("#fileChooserOKButton") + .queryButton(); + + final var root = + robot.lookup(".fileChooserSourceList") + .query(); + + final var directoryTable = + robot.lookup(".fileChooserDirectoryTable") + .query(); + + waitFor(10L, SECONDS, () -> Boolean.valueOf(!root.isDisabled())); + FxAssert.verifyThat(okButton, NodeMatchers.isDisabled()); + + robot.doubleClickOn("Z:\\"); + FxAssert.verifyThat(okButton, NodeMatchers.isDisabled()); + + waitFor(10L, SECONDS, () -> Boolean.valueOf(!root.isDisabled())); + robot.sleep(1L, SECONDS); + robot.clickOn(directoryTable); + robot.sleep(1L, SECONDS); + robot.clickOn("USERS"); + + FxAssert.verifyThat(okButton, NodeMatchers.isEnabled()); + robot.clickOn(okButton); Assertions.assertEquals( List.of("Z:\\USERS"), this.chooser.result() .stream() .map(Path::toString) - .collect(Collectors.toList())); + .collect(Collectors.toList()) + ); Assertions.assertEquals(0, this.events.size()); } } diff --git a/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserTest.java b/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserTest.java index 04cdf66..2a49c23 100644 --- a/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserTest.java +++ b/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserTest.java @@ -22,20 +22,21 @@ import com.io7m.jwheatsheaf.api.JWFileChooserType; import com.io7m.jwheatsheaf.api.JWFileChoosersType; import com.io7m.jwheatsheaf.ui.JWFileChoosers; -import javafx.scene.Node; -import javafx.scene.control.TableRow; +import javafx.scene.control.TableCell; import javafx.scene.input.KeyCode; import javafx.stage.Stage; import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInfo; import org.junit.jupiter.api.extension.ExtendWith; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.testfx.api.FxAssert; import org.testfx.api.FxRobot; import org.testfx.framework.junit5.ApplicationExtension; import org.testfx.framework.junit5.Start; import org.testfx.framework.junit5.Stop; +import org.testfx.matcher.base.NodeMatchers; import java.io.IOException; import java.nio.file.FileSystem; @@ -47,6 +48,9 @@ import java.util.Objects; import java.util.stream.Collectors; +import static java.util.concurrent.TimeUnit.SECONDS; +import static org.testfx.util.WaitForAsyncUtils.waitFor; + @ExtendWith(ApplicationExtension.class) public final class JWFileChooserTest { @@ -96,11 +100,17 @@ public void stop() /** * Clicking the cancel button yields nothing. + * + * @param robot The FX test robot */ @Test - public void testCancel(final FxRobot robot) + public void testCancel( + final FxRobot robot, + final TestInfo info) { + JWFileWindowTitles.setTitle(this.chooser, info); + robot.clickOn("#fileChooserCancelButton"); Assertions.assertEquals(List.of(), this.chooser.result()); Assertions.assertEquals(0, this.events.size()); @@ -109,189 +119,354 @@ public void testCancel(final FxRobot robot) /** * Clicking the first row of the directory table yields a directory, and * clicking the OK button selects it. + * + * @param robot The FX test robot */ @Test - public void testDirectorySelect(final FxRobot robot) + public void testDirectorySelect( + final FxRobot robot, + final TestInfo info) { - final TableRow row = robot.lookup(".table-row-cell").nth(1).query(); - robot.clickOn(row); - robot.clickOn("#fileChooserOKButton"); + JWFileWindowTitles.setTitle(this.chooser, info); + + final var okButton = + robot.lookup("#fileChooserOKButton") + .queryButton(); + + final var targetCell = + robot.lookup(n -> n instanceof TableCell) + .queryAllAs(TableCell.class) + .stream() + .filter(cell -> Objects.equals(cell.getText(), ".")) + .findFirst() + .orElseThrow(() -> new IllegalStateException( + "Unable to locate a '.' directory entry") + ); + + FxAssert.verifyThat(okButton, NodeMatchers.isDisabled()); + robot.clickOn(targetCell); + FxAssert.verifyThat(okButton, NodeMatchers.isEnabled()); + robot.clickOn(okButton); Assertions.assertEquals( - List.of("Z:\\USERS\\GROUCH\\DATA.XML"), + List.of("Z:\\USERS\\GROUCH"), this.chooser.result() .stream() .map(Path::toString) - .collect(Collectors.toList())); + .collect(Collectors.toList()) + ); Assertions.assertEquals(0, this.events.size()); } /** * Navigation via the path menu works. + * + * @param robot The FX test robot */ @Test - public void testPathMenuSelect(final FxRobot robot) - throws Exception + public void testPathMenuSelect( + final FxRobot robot, + final TestInfo info) { - // Test is fragile when run on Travis CI - Assumptions.assumeFalse(isTravisCI()); + JWFileWindowTitles.setTitle(this.chooser, info); + final var okButton = + robot.lookup("#fileChooserOKButton") + .queryButton(); final var choice = - robot.lookup("#fileChooserPathMenu").query(); + robot.lookup("#fileChooserPathMenu") + .query(); - robot.clickOn(choice) - .clickOn("Z:\\"); + robot.clickOn(choice); - final TableRow row = - robot.lookup(".table-row-cell") - .nth(0) + final var pathMenuItem = + robot.lookup(".context-menu") + .lookup("Z:\\") .query(); - robot.clickOn(row) - .clickOn("#fileChooserOKButton"); + LOG.debug("pathMenuItem: {}", pathMenuItem); + robot.clickOn(pathMenuItem); + robot.sleep(1L, SECONDS); + + final var targetCell = + robot.lookup(n -> n instanceof TableCell) + .queryAllAs(TableCell.class) + .stream() + .filter(cell -> Objects.equals(cell.getText(), ".")) + .findFirst() + .orElseThrow(() -> new IllegalStateException( + "Unable to locate a '.' directory entry") + ); + + FxAssert.verifyThat(okButton, NodeMatchers.isDisabled()); + robot.clickOn(targetCell); + + FxAssert.verifyThat(okButton, NodeMatchers.isEnabled()); + robot.clickOn(okButton); Assertions.assertEquals( List.of("Z:\\"), this.chooser.result() .stream() .map(Path::toString) - .collect(Collectors.toList())); + .collect(Collectors.toList()) + ); Assertions.assertEquals(0, this.events.size()); } - static boolean isTravisCI() - { - return Objects.equals(System.getenv("TRAVIS"), "true") - && Objects.equals(System.getenv("CI"), "true"); - } - /** * Navigation via the filesystem root menu succeeds. + * + * @param robot The FX test robot */ @Test - public void testSourceMenuSelect(final FxRobot robot) - throws Exception + public void testSourceMenuSelect( + final FxRobot robot, + final TestInfo info) { - robot.doubleClickOn("Z:\\"); + JWFileWindowTitles.setTitle(this.chooser, info); + + final var okButton = + robot.lookup("#fileChooserOKButton") + .queryButton(); + + final var rootItem = + robot.lookup(".fileChooserSourceList") + .lookup("Z:\\") + .query(); + + LOG.debug("rootItem: {}", rootItem); + robot.doubleClickOn(rootItem); + robot.sleep(1L, SECONDS); + + final TableCell row = + robot.lookup(".table-row-cell") + .lookup("USERS") + .query(); - final TableRow row = - robot.lookup(".table-row-cell").nth(1).query(); + FxAssert.verifyThat(okButton, NodeMatchers.isDisabled()); + robot.clickOn(row); - robot.clickOn(row) - .clickOn("#fileChooserOKButton"); + FxAssert.verifyThat(okButton, NodeMatchers.isEnabled()); + robot.clickOn(okButton); Assertions.assertEquals( List.of("Z:\\USERS"), this.chooser.result() .stream() .map(Path::toString) - .collect(Collectors.toList())); + .collect(Collectors.toList()) + ); Assertions.assertEquals(0, this.events.size()); } /** * Double clicking a directory navigates to that directory. + * + * @param robot The FX test robot + * + * @throws Exception On errors */ @Test - public void testDirectoryDoubleClick(final FxRobot robot) - throws IOException + public void testDirectoryDoubleClick( + final FxRobot robot, + final TestInfo info) + throws Exception { + JWFileWindowTitles.setTitle(this.chooser, info); + + final var okButton = + robot.lookup("#fileChooserOKButton") + .queryButton(); + Files.createDirectories( this.dosFilesystem.getPath("Y:\\", "EGG")); Files.writeString( this.dosFilesystem.getPath("Y:\\", "EGG", "EGG.TXT"), "EGG!"); - robot - .doubleClickOn("Y:\\") - .doubleClickOn("EGG") - .clickOn("EGG.TXT") - .clickOn("#fileChooserOKButton"); + final var sourceList = + robot.lookup(".fileChooserSourceList") + .query(); + + final var directoryTable = + robot.lookup(".fileChooserDirectoryTable") + .query(); + + final var sourceItem = + robot.lookup(".fileChooserSourceList") + .lookup("Y:\\") + .query(); + + robot.doubleClickOn(sourceItem); + waitFor(10L, SECONDS, () -> Boolean.valueOf(!sourceList.isDisabled())); + robot.sleep(1L, SECONDS); + + robot.doubleClickOn("EGG"); + waitFor(10L, SECONDS, () -> Boolean.valueOf(!sourceList.isDisabled())); + robot.sleep(1L, SECONDS); + + FxAssert.verifyThat(okButton, NodeMatchers.isDisabled()); + robot.clickOn(directoryTable); + robot.sleep(1L, SECONDS); + robot.clickOn("EGG.TXT"); + robot.sleep(1L, SECONDS); + + FxAssert.verifyThat(okButton, NodeMatchers.isEnabled()); + robot.clickOn(okButton); Assertions.assertEquals( List.of("Y:\\EGG\\EGG.TXT"), this.chooser.result() .stream() .map(Path::toString) - .collect(Collectors.toList())); + .collect(Collectors.toList()) + ); Assertions.assertEquals(0, this.events.size()); } /** * Creating directories works. + * + * @param robot The FX test robot */ @Test - public void testDirectoryCreate(final FxRobot robot) - throws IOException + public void testDirectoryCreate( + final FxRobot robot, + final TestInfo info) { - // Test is fragile when run on Travis CI - Assumptions.assumeFalse(isTravisCI()); + JWFileWindowTitles.setTitle(this.chooser, info); - robot - .doubleClickOn("X:\\") - .clickOn("#fileChooserCreateDirectoryButton") - .write("CREATED") - .type(KeyCode.ENTER) - .clickOn("CREATED") - .clickOn("#fileChooserOKButton"); + final var okButton = + robot.lookup("#fileChooserOKButton") + .queryButton(); + + final var rootItem = + robot.lookup(".fileChooserSourceList") + .lookup("X:\\") + .query(); + + robot.doubleClickOn(rootItem); + + robot.clickOn("#fileChooserCreateDirectoryButton"); + robot.write("CREATED"); + robot.type(KeyCode.ENTER); + + FxAssert.verifyThat(okButton, NodeMatchers.isDisabled()); + robot.clickOn("CREATED"); + FxAssert.verifyThat(okButton, NodeMatchers.isEnabled()); + robot.clickOn("#fileChooserOKButton"); Assertions.assertEquals( List.of("X:\\CREATED"), this.chooser.result() .stream() .map(Path::toString) - .collect(Collectors.toList())); + .collect(Collectors.toList()) + ); Assertions.assertEquals(0, this.events.size()); } /** * Searching works. + * + * @param robot The FX test robot */ @Test - public void testDirectorySearch(final FxRobot robot) - throws IOException + public void testDirectorySearch( + final FxRobot robot, + final TestInfo info) { - robot - .clickOn("#fileChooserSearchField") - .write("PHOTO.JPG") - .clickOn((Node) robot.lookup("PHOTO.JPG").nth(2).query()) - .clickOn("#fileChooserOKButton"); + JWFileWindowTitles.setTitle(this.chooser, info); + + final var okButton = + robot.lookup("#fileChooserOKButton") + .queryButton(); + + FxAssert.verifyThat(okButton, NodeMatchers.isDisabled()); + + final var searchField = + robot.lookup("#fileChooserSearchField") + .query(); + robot.clickOn(searchField); + + robot.write("PHOTO.JPG"); + + final var tableItem = + robot.lookup("PHOTO.JPG") + .match(node -> node instanceof TableCell) + .query(); + + LOG.debug("testDirectorySearch: {}", tableItem); + robot.clickOn(tableItem); + robot.sleep(1L, SECONDS); + FxAssert.verifyThat(okButton, NodeMatchers.isEnabled()); + robot.clickOn(okButton); Assertions.assertEquals( List.of("Z:\\USERS\\GROUCH\\PHOTO.JPG"), this.chooser.result() .stream() .map(Path::toString) - .collect(Collectors.toList())); + .collect(Collectors.toList()) + ); Assertions.assertEquals(0, this.events.size()); } /** * The up button works. + * + * @param robot The FX test robot */ @Test - public void testDirectoryUp(final FxRobot robot) - throws IOException + public void testDirectoryUp( + final FxRobot robot, + final TestInfo info) { - robot - .clickOn("#fileChooserUpButton") - .clickOn("#fileChooserUpButton") - .clickOn("USERS") - .clickOn("#fileChooserOKButton"); + JWFileWindowTitles.setTitle(this.chooser, info); + + final var okButton = + robot.lookup("#fileChooserOKButton") + .queryButton(); + + FxAssert.verifyThat(okButton, NodeMatchers.isDisabled()); + + robot.clickOn("#fileChooserUpButton"); + robot.sleep(1L, SECONDS); + + robot.clickOn("#fileChooserUpButton"); + robot.sleep(1L, SECONDS); + + final var targetCell = + robot.lookup(n -> n instanceof TableCell) + .queryAllAs(TableCell.class) + .stream() + .filter(cell -> Objects.equals(cell.getText(), "USERS")) + .findFirst() + .orElseThrow(() -> new IllegalStateException( + "Unable to locate a 'USERS' directory entry") + ); + + robot.clickOn(targetCell); + robot.sleep(1L, SECONDS); + + FxAssert.verifyThat(okButton, NodeMatchers.isEnabled()); + robot.clickOn(okButton); Assertions.assertEquals( List.of("Z:\\USERS"), this.chooser.result() .stream() .map(Path::toString) - .collect(Collectors.toList())); + .collect(Collectors.toList()) + ); Assertions.assertEquals(0, this.events.size()); } } diff --git a/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileWindowTitles.java b/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileWindowTitles.java new file mode 100644 index 0000000..cd25926 --- /dev/null +++ b/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileWindowTitles.java @@ -0,0 +1,61 @@ +/* + * Copyright © 2021 Mark Raynsford http://io7m.com + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package com.io7m.jwheatsheaf.tests; + +import com.io7m.jwheatsheaf.api.JWFileChooserType; +import javafx.application.Platform; +import javafx.stage.Stage; +import org.junit.jupiter.api.TestInfo; + +import java.lang.reflect.Method; + +public final class JWFileWindowTitles +{ + private JWFileWindowTitles() + { + + } + + public static void setTitle( + final JWFileChooserType chooser, + final TestInfo title) + { + try { + final var field = + chooser.getClass() + .getDeclaredField("window"); + + field.setAccessible(true); + final Stage window = (Stage) field.get(chooser); + + Platform.runLater(() -> { + final var builder = new StringBuilder(); + builder.append( + title.getTestClass().map(Class::getSimpleName).orElse("")); + builder.append(":"); + builder.append( + title.getTestMethod().map(Method::getName).orElse("")); + builder.append(" ("); + builder.append(title.getDisplayName()); + builder.append(")"); + window.setTitle(builder.toString()); + }); + } catch (final IllegalAccessException | NoSuchFieldException e) { + throw new IllegalStateException(e); + } + } +} diff --git a/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/JWFileChoosers.java b/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/JWFileChoosers.java index ae87562..1f0619a 100644 --- a/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/JWFileChoosers.java +++ b/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/JWFileChoosers.java @@ -29,6 +29,7 @@ import javafx.scene.layout.Pane; import javafx.stage.Modality; import javafx.stage.Stage; +import javafx.stage.StageStyle; import javafx.stage.Window; import java.io.IOException; @@ -172,6 +173,7 @@ public JWFileChooserType create( final var dialog = new Stage(((Stage) window).getStyle()); dialog.initModality(Modality.APPLICATION_MODAL); + dialog.initStyle(StageStyle.DECORATED); dialog.setScene(new Scene(pane)); switch (configuration.action()) { diff --git a/pom.xml b/pom.xml index 5839717..dd7eb80 100644 --- a/pom.xml +++ b/pom.xml @@ -37,7 +37,7 @@ b0ab224c1aa641afbe9d0d34b1f60f1d 2.8.3 2.0.0 - 13.0.2 + 16 4.0.16-alpha @@ -126,6 +126,11 @@ javafx-graphics ${javafx.version} + + org.openjfx + javafx-swing + ${javafx.version} + org.osgi org.osgi.annotation.bundle @@ -191,6 +196,11 @@ testfx-core ${testfx.version} + + org.testfx + openjfx-monocle + jdk-11+26 + com.io7m.primogenitor com.io7m.primogenitor.support From ded272638ea232202598f91f320717fb7d5db99d Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sat, 10 Apr 2021 20:02:23 +0000 Subject: [PATCH 16/63] Document the run script --- .github/workflows/run-with-xvfb.sh | 46 ++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/.github/workflows/run-with-xvfb.sh b/.github/workflows/run-with-xvfb.sh index c7f646e..bce5226 100755 --- a/.github/workflows/run-with-xvfb.sh +++ b/.github/workflows/run-with-xvfb.sh @@ -2,26 +2,66 @@ exec > >(tee build.txt) 2>&1 +#--------------------------------------------------------------------- +# Install all of the various required packages. +# +# We use: +# xvfb to provide a virtual X server +# fluxbox to provide a bare-minimum window manager with click-to-focus +# ffmpeg to record the session +# feh to set a background +# xterm to display the build log in the video +# + sudo apt-get -y install xvfb fluxbox feh ffmpeg xterm -Xvfb :99 & -XVFB_PID="$!" +#--------------------------------------------------------------------- +# Start Xvfb on a new display. +# +Xvfb :99 & export DISPLAY=:99 sleep 1 +#--------------------------------------------------------------------- +# Start fluxbox on the X server. +# + fluxbox & sleep 1 -feh --bg-tile .github/workflows/wallpaper.jpg + +#--------------------------------------------------------------------- +# Start an xterm that displays the build log. +# + xterm -geometry 200x40 -e tail -F build.txt & sleep 1 + +#--------------------------------------------------------------------- +# Set a desktop image. +# + feh --bg-tile .github/workflows/wallpaper.jpg sleep 1 +#--------------------------------------------------------------------- +# Start recording the session. +# + ffmpeg -f x11grab -y -r 15 -video_size 1280x1024 -i :99 -vcodec libx264 test-suite.mkv & FFMPEG_PID="$!" +#--------------------------------------------------------------------- +# Execute the passed-in build command. +# + "$@" +#--------------------------------------------------------------------- +# Wait a while, and then instruct ffmpeg to stop recording. This step +# is necessary because video files need to be processed when recording +# stops. +# + sleep 5 kill -INT "${FFMPEG_PID}" From 558763964c30b6a25ee508167c5f450ab7cf054a Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sat, 10 Apr 2021 20:22:07 +0000 Subject: [PATCH 17/63] Allow the escape key to close file choosers This adds an event handler to the file chooser that closes the chooser when the user presses the escape key. The chooser acts as if the user didn't select a file. Fix: https://github.com/io7m/jwheatsheaf/issues/14 --- README-CHANGES.xml | 23 +++++++++++----- .../jwheatsheaf/tests/JWFileChooserTest.java | 27 +++++++++++++++++++ .../io7m/jwheatsheaf/ui/JWFileChoosers.java | 12 +++++++++ 3 files changed, 55 insertions(+), 7 deletions(-) diff --git a/README-CHANGES.xml b/README-CHANGES.xml index 928adf7..259ed8f 100644 --- a/README-CHANGES.xml +++ b/README-CHANGES.xml @@ -1,17 +1,17 @@ - + - + - + @@ -20,7 +20,7 @@ - + @@ -29,14 +29,23 @@ - + - + - + + + + + + + + + + diff --git a/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserTest.java b/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserTest.java index 2a49c23..88104b7 100644 --- a/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserTest.java +++ b/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserTest.java @@ -469,4 +469,31 @@ public void testDirectoryUp( ); Assertions.assertEquals(0, this.events.size()); } + + /** + * Pressing escape closes the dialog without selecting a file. + * + * @param robot The FX test robot + */ + + @Test + public void testEscapeCloses( + final FxRobot robot, + final TestInfo info) + { + JWFileWindowTitles.setTitle(this.chooser, info); + + final var rootItem = + robot.lookup(".fileChooserSourceList") + .query(); + + robot.clickOn(rootItem); + robot.type(KeyCode.ESCAPE); + + Assertions.assertEquals( + List.of(), + this.chooser.result() + ); + Assertions.assertEquals(0, this.events.size()); + } } diff --git a/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/JWFileChoosers.java b/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/JWFileChoosers.java index 1f0619a..a320cb8 100644 --- a/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/JWFileChoosers.java +++ b/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/JWFileChoosers.java @@ -26,6 +26,8 @@ import com.io7m.jwheatsheaf.ui.internal.JWStrings; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; import javafx.scene.layout.Pane; import javafx.stage.Modality; import javafx.stage.Stage; @@ -186,6 +188,16 @@ public JWFileChooserType create( break; } + /* + * Close the dialog when escape is pressed. + */ + + dialog.addEventHandler(KeyEvent.KEY_RELEASED, (KeyEvent event) -> { + if (KeyCode.ESCAPE == event.getCode()) { + dialog.close(); + } + }); + return new JWFileChooser(dialog, viewController); } catch (final IOException e) { throw new UncheckedIOException(e); From 6a41a776cf240f24c1db26a2d38113b4c049778d Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sat, 10 Apr 2021 21:15:52 +0000 Subject: [PATCH 18/63] Allow for specifying an initial filename This adds a configuration option to allow for specifying an initial filename in choosers. Fix: https://github.com/io7m/jwheatsheaf/issues/15 --- README-CHANGES.xml | 9 +- com.io7m.jwheatsheaf.api/pom.xml | 2 +- .../api/JWFileChooserConfigurationType.java | 6 + .../io7m/jwheatsheaf/api/package-info.java | 2 +- com.io7m.jwheatsheaf.documentation/pom.xml | 2 +- com.io7m.jwheatsheaf.examples/pom.xml | 2 +- com.io7m.jwheatsheaf.oxygen/pom.xml | 2 +- com.io7m.jwheatsheaf.tests/pom.xml | 2 +- .../JWFileChooserInitialNameCreateTest.java | 124 ++++++++++++++++++ .../JWFileChooserInitialNameOpenTest.java | 122 +++++++++++++++++ com.io7m.jwheatsheaf.ui/pom.xml | 2 +- .../internal/JWFileChooserViewController.java | 35 +++++ pom.xml | 2 +- 13 files changed, 302 insertions(+), 10 deletions(-) create mode 100644 com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserInitialNameCreateTest.java create mode 100644 com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserInitialNameOpenTest.java diff --git a/README-CHANGES.xml b/README-CHANGES.xml index 259ed8f..f9c27d8 100644 --- a/README-CHANGES.xml +++ b/README-CHANGES.xml @@ -39,13 +39,18 @@ - + - + + + + + + diff --git a/com.io7m.jwheatsheaf.api/pom.xml b/com.io7m.jwheatsheaf.api/pom.xml index 48ddaf2..7365923 100644 --- a/com.io7m.jwheatsheaf.api/pom.xml +++ b/com.io7m.jwheatsheaf.api/pom.xml @@ -9,7 +9,7 @@ com.io7m.jwheatsheaf com.io7m.jwheatsheaf - 2.0.2-SNAPSHOT + 3.0.0-SNAPSHOT com.io7m.jwheatsheaf.api diff --git a/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChooserConfigurationType.java b/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChooserConfigurationType.java index 209c5b1..6f2c58a 100644 --- a/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChooserConfigurationType.java +++ b/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChooserConfigurationType.java @@ -57,6 +57,12 @@ public interface JWFileChooserConfigurationType Optional initialDirectory(); + /** + * @return The file name initially entered into the selection field + */ + + Optional initialFileName(); + /** * The image set used to select images for the file chooser UI. If no * set is specified here, a default set of images and icons will be used. diff --git a/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/package-info.java b/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/package-info.java index 635c608..d1455ab 100644 --- a/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/package-info.java +++ b/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/package-info.java @@ -19,7 +19,7 @@ */ @Export -@Version("1.0.0") +@Version("2.0.0") package com.io7m.jwheatsheaf.api; import org.osgi.annotation.bundle.Export; diff --git a/com.io7m.jwheatsheaf.documentation/pom.xml b/com.io7m.jwheatsheaf.documentation/pom.xml index 18f72ab..685a3b0 100644 --- a/com.io7m.jwheatsheaf.documentation/pom.xml +++ b/com.io7m.jwheatsheaf.documentation/pom.xml @@ -9,7 +9,7 @@ com.io7m.jwheatsheaf com.io7m.jwheatsheaf - 2.0.2-SNAPSHOT + 3.0.0-SNAPSHOT com.io7m.jwheatsheaf.documentation diff --git a/com.io7m.jwheatsheaf.examples/pom.xml b/com.io7m.jwheatsheaf.examples/pom.xml index 550c28a..747d744 100644 --- a/com.io7m.jwheatsheaf.examples/pom.xml +++ b/com.io7m.jwheatsheaf.examples/pom.xml @@ -9,7 +9,7 @@ com.io7m.jwheatsheaf com.io7m.jwheatsheaf - 2.0.2-SNAPSHOT + 3.0.0-SNAPSHOT com.io7m.jwheatsheaf.examples diff --git a/com.io7m.jwheatsheaf.oxygen/pom.xml b/com.io7m.jwheatsheaf.oxygen/pom.xml index 99b8c48..7f38790 100644 --- a/com.io7m.jwheatsheaf.oxygen/pom.xml +++ b/com.io7m.jwheatsheaf.oxygen/pom.xml @@ -9,7 +9,7 @@ com.io7m.jwheatsheaf com.io7m.jwheatsheaf - 2.0.2-SNAPSHOT + 3.0.0-SNAPSHOT com.io7m.jwheatsheaf.oxygen diff --git a/com.io7m.jwheatsheaf.tests/pom.xml b/com.io7m.jwheatsheaf.tests/pom.xml index 863eef5..074c53b 100644 --- a/com.io7m.jwheatsheaf.tests/pom.xml +++ b/com.io7m.jwheatsheaf.tests/pom.xml @@ -9,7 +9,7 @@ com.io7m.jwheatsheaf com.io7m.jwheatsheaf - 2.0.2-SNAPSHOT + 3.0.0-SNAPSHOT com.io7m.jwheatsheaf.tests diff --git a/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserInitialNameCreateTest.java b/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserInitialNameCreateTest.java new file mode 100644 index 0000000..f12d62d --- /dev/null +++ b/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserInitialNameCreateTest.java @@ -0,0 +1,124 @@ +/* + * Copyright © 2020 Mark Raynsford http://io7m.com + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package com.io7m.jwheatsheaf.tests; + +import com.io7m.jwheatsheaf.api.JWFileChooserAction; +import com.io7m.jwheatsheaf.api.JWFileChooserConfiguration; +import com.io7m.jwheatsheaf.api.JWFileChooserEventType; +import com.io7m.jwheatsheaf.api.JWFileChooserType; +import com.io7m.jwheatsheaf.api.JWFileChoosersType; +import com.io7m.jwheatsheaf.ui.JWFileChoosers; +import javafx.stage.Stage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInfo; +import org.junit.jupiter.api.extension.ExtendWith; +import org.testfx.api.FxAssert; +import org.testfx.api.FxRobot; +import org.testfx.framework.junit5.ApplicationExtension; +import org.testfx.framework.junit5.Start; +import org.testfx.framework.junit5.Stop; +import org.testfx.matcher.base.NodeMatchers; + +import java.io.IOException; +import java.nio.file.FileSystem; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.TimeoutException; +import java.util.stream.Collectors; + +import static java.util.concurrent.TimeUnit.SECONDS; +import static org.testfx.util.WaitForAsyncUtils.waitFor; + +@ExtendWith(ApplicationExtension.class) +public final class JWFileChooserInitialNameCreateTest +{ + private JWTestFilesystems filesystems; + private FileSystem dosFilesystem; + private JWFileChooserType chooser; + private List events; + private JWFileChoosersType choosers; + + @Start + public void start(final Stage stage) + throws Exception + { + this.events = Collections.synchronizedList(new ArrayList<>()); + + this.filesystems = JWTestFilesystems.create(); + final var systems = this.filesystems.filesystems(); + this.dosFilesystem = systems.get("ExampleDOS"); + + final var configuration = + JWFileChooserConfiguration.builder() + .setAllowDirectoryCreation(true) + .setAction(JWFileChooserAction.CREATE) + .setFileSystem(this.dosFilesystem) + .setInitialFileName("SOMETHING.TXT") + .build(); + + this.choosers = JWFileChoosers.create(); + this.chooser = this.choosers.create(stage, configuration); + this.chooser.setEventListener(event -> this.events.add(event)); + this.chooser.show(); + } + + @Stop + public void stop() + throws IOException + { + this.choosers.close(); + } + + /** + * Supplying an initial filename allows instantly selecting a file. + * + * @param robot The FX test robot + */ + + @Test + public void testInitialNameCreate( + final FxRobot robot, + final TestInfo info) + throws TimeoutException + { + JWFileWindowTitles.setTitle(this.chooser, info); + + final var okButton = + robot.lookup("#fileChooserOKButton") + .queryButton(); + final var textField = + robot.lookup("#fileChooserNameField") + .queryTextInputControl(); + + waitFor(3L, SECONDS, () -> !textField.textProperty().get().isEmpty()); + FxAssert.verifyThat(okButton, NodeMatchers.isEnabled()); + robot.sleep(1L, SECONDS); + robot.clickOn(okButton); + + Assertions.assertEquals( + List.of("Z:\\USERS\\GROUCH\\SOMETHING.TXT"), + this.chooser.result() + .stream() + .map(Path::toString) + .collect(Collectors.toList()) + ); + Assertions.assertEquals(0, this.events.size()); + } +} diff --git a/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserInitialNameOpenTest.java b/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserInitialNameOpenTest.java new file mode 100644 index 0000000..ee5dc74 --- /dev/null +++ b/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserInitialNameOpenTest.java @@ -0,0 +1,122 @@ +/* + * Copyright © 2020 Mark Raynsford http://io7m.com + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package com.io7m.jwheatsheaf.tests; + +import com.io7m.jwheatsheaf.api.JWFileChooserAction; +import com.io7m.jwheatsheaf.api.JWFileChooserConfiguration; +import com.io7m.jwheatsheaf.api.JWFileChooserEventType; +import com.io7m.jwheatsheaf.api.JWFileChooserType; +import com.io7m.jwheatsheaf.api.JWFileChoosersType; +import com.io7m.jwheatsheaf.ui.JWFileChoosers; +import javafx.stage.Stage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInfo; +import org.junit.jupiter.api.extension.ExtendWith; +import org.testfx.api.FxAssert; +import org.testfx.api.FxRobot; +import org.testfx.framework.junit5.ApplicationExtension; +import org.testfx.framework.junit5.Start; +import org.testfx.framework.junit5.Stop; +import org.testfx.matcher.base.NodeMatchers; + +import java.io.IOException; +import java.nio.file.FileSystem; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.TimeoutException; +import java.util.stream.Collectors; + +import static java.util.concurrent.TimeUnit.SECONDS; +import static org.testfx.util.WaitForAsyncUtils.waitFor; + +@ExtendWith(ApplicationExtension.class) +public final class JWFileChooserInitialNameOpenTest +{ + private JWTestFilesystems filesystems; + private FileSystem dosFilesystem; + private JWFileChooserType chooser; + private List events; + private JWFileChoosersType choosers; + + @Start + public void start(final Stage stage) + throws Exception + { + this.events = Collections.synchronizedList(new ArrayList<>()); + + this.filesystems = JWTestFilesystems.create(); + final var systems = this.filesystems.filesystems(); + this.dosFilesystem = systems.get("ExampleDOS"); + + final var configuration = + JWFileChooserConfiguration.builder() + .setAllowDirectoryCreation(true) + .setAction(JWFileChooserAction.OPEN_EXISTING_SINGLE) + .setFileSystem(this.dosFilesystem) + .setInitialFileName("README.TXT") + .build(); + + this.choosers = JWFileChoosers.create(); + this.chooser = this.choosers.create(stage, configuration); + this.chooser.setEventListener(event -> this.events.add(event)); + this.chooser.show(); + } + + @Stop + public void stop() + throws IOException + { + this.choosers.close(); + } + + /** + * Supplying an initial filename allows instantly selecting a file. + * + * @param robot The FX test robot + */ + + @Test + public void testInitialNameOpen( + final FxRobot robot, + final TestInfo info) + throws TimeoutException + { + final var okButton = + robot.lookup("#fileChooserOKButton") + .queryButton(); + final var textField = + robot.lookup("#fileChooserNameField") + .queryTextInputControl(); + + waitFor(3L, SECONDS, () -> !textField.textProperty().get().isEmpty()); + FxAssert.verifyThat(okButton, NodeMatchers.isEnabled()); + robot.sleep(1L, SECONDS); + robot.clickOn(okButton); + + Assertions.assertEquals( + List.of("Z:\\USERS\\GROUCH\\README.TXT"), + this.chooser.result() + .stream() + .map(Path::toString) + .collect(Collectors.toList()) + ); + Assertions.assertEquals(0, this.events.size()); + } +} diff --git a/com.io7m.jwheatsheaf.ui/pom.xml b/com.io7m.jwheatsheaf.ui/pom.xml index 97e52c0..141492d 100644 --- a/com.io7m.jwheatsheaf.ui/pom.xml +++ b/com.io7m.jwheatsheaf.ui/pom.xml @@ -9,7 +9,7 @@ com.io7m.jwheatsheaf com.io7m.jwheatsheaf - 2.0.2-SNAPSHOT + 3.0.0-SNAPSHOT com.io7m.jwheatsheaf.ui diff --git a/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/internal/JWFileChooserViewController.java b/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/internal/JWFileChooserViewController.java index da83f4b..2c6c06e 100644 --- a/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/internal/JWFileChooserViewController.java +++ b/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/internal/JWFileChooserViewController.java @@ -57,8 +57,11 @@ import java.nio.file.attribute.FileTime; import java.util.ArrayList; import java.util.List; +import java.util.NoSuchElementException; import java.util.Objects; +import java.util.concurrent.BlockingDeque; import java.util.concurrent.ExecutorService; +import java.util.concurrent.LinkedBlockingDeque; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; import java.util.stream.Collectors; @@ -103,6 +106,7 @@ public final class JWFileChooserViewController private JWFileChoosersTesting testing; private JWStrings strings; private JWToolTips toolTips; + private BlockingDeque initialFilename; /** * Construct a view controller. @@ -112,6 +116,7 @@ public JWFileChooserViewController() { this.listener = this::onPathMenuItemSelected; this.result = List.of(); + this.initialFilename = new LinkedBlockingDeque<>(); this.eventReceiver = new AtomicReference<>(event -> { }); } @@ -242,6 +247,8 @@ private void configureFileField() { this.fileName.textProperty() .addListener(observable -> this.onNameFieldChanged()); + this.configuration.initialFileName() + .ifPresent(this.initialFilename::push); } private void configureSourceList( @@ -346,6 +353,14 @@ private void populateDirectoryTableWith( Platform.runLater(() -> { this.ioUnlockUI(); this.fileListing.setItems(items); + + try { + final var name = this.initialFilename.pop(); + this.trySelectDirectoryItem(items, name); + this.fileName.setText(name); + } catch (final NoSuchElementException e) { + // Most of the time, there's no initial filename. + } }); } catch (final Exception e) { LOG.error("exception during directory listing: ", e); @@ -363,6 +378,26 @@ private void populateDirectoryTableWith( }); } + /** + * Select the item in the list of file items that has the given name. If + * none of them have the given name, do nothing. + */ + + private void trySelectDirectoryItem( + final List items, + final String name) + { + for (final var item : items) { + final var itemFileName = item.path().getFileName(); + if (itemFileName != null) { + if (Objects.equals(itemFileName.toString(), name)) { + this.directoryTable.getSelectionModel().select(item); + return; + } + } + } + } + private void ioUnlockUI() { Preconditions.checkPreconditionV( diff --git a/pom.xml b/pom.xml index dd7eb80..ada4cb0 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,7 @@ com.io7m.jwheatsheaf com.io7m.jwheatsheaf - 2.0.2-SNAPSHOT + 3.0.0-SNAPSHOT pom com.io7m.jwheatsheaf From ef3303a6434bc910f52458809ff06032f4a1b9d7 Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sat, 10 Apr 2021 21:31:26 +0000 Subject: [PATCH 19/63] Allow for specifying custom dialog titles This adds a configuration option to allow for specifying a custom dialog title for choosers. Fix: https://github.com/io7m/jwheatsheaf/issues/8 --- README-CHANGES.xml | 9 ++++-- .../api/JWFileChooserConfigurationType.java | 6 ++++ .../examples/ExampleViewController.java | 15 ++++++++-- .../io7m/jwheatsheaf/examples/example.fxml | 8 ++++++ .../io7m/jwheatsheaf/ui/JWFileChoosers.java | 28 +++++++++++++------ 5 files changed, 52 insertions(+), 14 deletions(-) diff --git a/README-CHANGES.xml b/README-CHANGES.xml index f9c27d8..20f64cf 100644 --- a/README-CHANGES.xml +++ b/README-CHANGES.xml @@ -39,18 +39,23 @@ - + - + + + + + + diff --git a/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChooserConfigurationType.java b/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChooserConfigurationType.java index 6f2c58a..e56ee6a 100644 --- a/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChooserConfigurationType.java +++ b/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChooserConfigurationType.java @@ -63,6 +63,12 @@ public interface JWFileChooserConfigurationType Optional initialFileName(); + /** + * @return A string that will override the generic dialog title + */ + + Optional title(); + /** * The image set used to select images for the file chooser UI. If no * set is specified here, a default set of images and icons will be used. diff --git a/com.io7m.jwheatsheaf.examples/src/main/java/com/io7m/jwheatsheaf/examples/ExampleViewController.java b/com.io7m.jwheatsheaf.examples/src/main/java/com/io7m/jwheatsheaf/examples/ExampleViewController.java index 8797ed1..bbe302a 100644 --- a/com.io7m.jwheatsheaf.examples/src/main/java/com/io7m/jwheatsheaf/examples/ExampleViewController.java +++ b/com.io7m.jwheatsheaf.examples/src/main/java/com/io7m/jwheatsheaf/examples/ExampleViewController.java @@ -28,6 +28,7 @@ import javafx.scene.control.CheckBox; import javafx.scene.control.ChoiceBox; import javafx.scene.control.TextArea; +import javafx.scene.control.TextField; import javafx.scene.layout.Pane; import java.io.IOException; @@ -64,6 +65,8 @@ public final class ExampleViewController implements Initializable private CheckBox slowIO; @FXML private ChoiceBox action; + @FXML + private TextField title; public ExampleViewController() { @@ -150,7 +153,7 @@ private void onOpenSelected() fileSystem.getPath("G", "H", "I") ); - final var configuration = + final var configurationBuilder = JWFileChooserConfiguration.builder() .setAllowDirectoryCreation(this.allowDirectoryCreation.isSelected()) .setFileSystem(fileSystem) @@ -159,8 +162,14 @@ private void onOpenSelected() .setAction(this.action.getValue()) .addFileFilters(new ExampleFilterRejectAll()) .addFileFilters(new ExampleFilterXML()) - .addAllRecentFiles(recents) - .build(); + .addAllRecentFiles(recents); + + if (!this.title.getText().isEmpty()) { + configurationBuilder.setTitle(this.title.getText()); + } + + final var configuration = + configurationBuilder.build(); final var testingBuilder = JWFileChoosersTesting.builder(); if (this.slowIO.isSelected()) { diff --git a/com.io7m.jwheatsheaf.examples/src/main/resources/com/io7m/jwheatsheaf/examples/example.fxml b/com.io7m.jwheatsheaf.examples/src/main/resources/com/io7m/jwheatsheaf/examples/example.fxml index b4e72c9..de118c4 100644 --- a/com.io7m.jwheatsheaf.examples/src/main/resources/com/io7m/jwheatsheaf/examples/example.fxml +++ b/com.io7m.jwheatsheaf.examples/src/main/resources/com/io7m/jwheatsheaf/examples/example.fxml @@ -6,6 +6,7 @@ + @@ -54,6 +55,13 @@ + + + + + diff --git a/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/JWFileChoosers.java b/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/JWFileChoosers.java index a320cb8..5bfd8be 100644 --- a/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/JWFileChoosers.java +++ b/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/JWFileChoosers.java @@ -178,15 +178,25 @@ public JWFileChooserType create( dialog.initStyle(StageStyle.DECORATED); dialog.setScene(new Scene(pane)); - switch (configuration.action()) { - case CREATE: - case OPEN_EXISTING_SINGLE: - dialog.setTitle(this.strings.fileSelect()); - break; - case OPEN_EXISTING_MULTIPLE: - dialog.setTitle(this.strings.filesSelect()); - break; - } + /* + * Configure the title for the dialog. + */ + + configuration.title() + .ifPresentOrElse( + dialog::setTitle, + () -> { + switch (configuration.action()) { + case CREATE: + case OPEN_EXISTING_SINGLE: + dialog.setTitle(this.strings.fileSelect()); + break; + case OPEN_EXISTING_MULTIPLE: + dialog.setTitle(this.strings.filesSelect()); + break; + } + } + ); /* * Close the dialog when escape is pressed. From ff6ae8748cbc0c66a18be748fb1bcb9bbaee53b9 Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sat, 10 Apr 2021 21:34:46 +0000 Subject: [PATCH 20/63] Update README Fix: https://github.com/io7m/jwheatsheaf/issues/16 --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 323195a..263846b 100644 --- a/README.md +++ b/README.md @@ -13,3 +13,5 @@ jwheatsheaf | OpenJDK Current | Linux | [![Build (OpenJDK Current, Linux)](https://img.shields.io/github/workflow/status/io7m/jwheatsheaf/main-openjdk_current-linux)](https://github.com/io7m/jwheatsheaf/actions?query=workflow%3Amain-openjdk_current-linux) | OpenJDK Current | Windows | [![Build (OpenJDK Current, Windows)](https://img.shields.io/github/workflow/status/io7m/jwheatsheaf/main-openjdk_current-windows)](https://github.com/io7m/jwheatsheaf/actions?query=workflow%3Amain-openjdk_current-windows) +An alternative to JavaFX's FileChooser that aims to be feature-compatible, if not fully API-compatible. + From b65b73c7980be912c7f86ec5539298fb75c0f182 Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sat, 10 Apr 2021 21:48:22 +0000 Subject: [PATCH 21/63] Make the default filters public This adds methods on the JWFileChoosersType interface that provide access to the default "all files" and "all directories" filters. Fix: https://github.com/io7m/jwheatsheaf/issues/10 --- README-CHANGES.xml | 9 +++- .../jwheatsheaf/api/JWFileChoosersType.java | 12 +++++ .../jwheatsheaf/tests/JWFileListTest.java | 29 ++++++++---- .../io7m/jwheatsheaf/ui/JWFileChoosers.java | 45 +++++++++++++++++-- .../internal/JWFileChooserViewController.java | 2 +- .../com/io7m/jwheatsheaf/ui/package-info.java | 2 +- 6 files changed, 82 insertions(+), 17 deletions(-) diff --git a/README-CHANGES.xml b/README-CHANGES.xml index 20f64cf..cd4e401 100644 --- a/README-CHANGES.xml +++ b/README-CHANGES.xml @@ -39,7 +39,7 @@ - + @@ -51,11 +51,16 @@ - + + + + + + diff --git a/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChoosersType.java b/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChoosersType.java index 32d9c1a..6f34f5f 100644 --- a/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChoosersType.java +++ b/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChoosersType.java @@ -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(); } diff --git a/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileListTest.java b/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileListTest.java index a207087..3a47a9a 100644 --- a/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileListTest.java +++ b/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileListTest.java @@ -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; @@ -39,16 +43,16 @@ public final class JWFileListTest private JWFileItem item1; private JWFileItem item2; private List 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() @@ -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()); @@ -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"); @@ -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() @@ -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()); } } diff --git a/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/JWFileChoosers.java b/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/JWFileChoosers.java index 5bfd8be..9bb59e7 100644 --- a/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/JWFileChoosers.java +++ b/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/JWFileChoosers.java @@ -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; @@ -51,11 +54,15 @@ 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"); @@ -63,6 +70,10 @@ private JWFileChoosers( 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(); } @@ -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) + ); } /** @@ -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 @@ -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() { diff --git a/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/internal/JWFileChooserViewController.java b/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/internal/JWFileChooserViewController.java index 2c6c06e..5196d40 100644 --- a/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/internal/JWFileChooserViewController.java +++ b/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/internal/JWFileChooserViewController.java @@ -106,7 +106,7 @@ public final class JWFileChooserViewController private JWFileChoosersTesting testing; private JWStrings strings; private JWToolTips toolTips; - private BlockingDeque initialFilename; + private final BlockingDeque initialFilename; /** * Construct a view controller. diff --git a/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/package-info.java b/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/package-info.java index 097f477..ad8efaf 100644 --- a/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/package-info.java +++ b/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/package-info.java @@ -19,7 +19,7 @@ */ @Export -@Version("2.0.0") +@Version("2.1.0") package com.io7m.jwheatsheaf.ui; import org.osgi.annotation.bundle.Export; From c2e99a875a9fc60a747d4fd5b86232d3cde0b414 Mon Sep 17 00:00:00 2001 From: Dave Jarvis Date: Sun, 11 Apr 2021 00:24:44 -0700 Subject: [PATCH 22/63] Add file selection mode to restrict acceptable files --- .../JWFileChooserConfigurationDefaults.java | 14 +++ .../api/JWFileChooserConfigurationType.java | 19 +++ .../tests/JWFileChooserSelectionModeTest.java | 118 ++++++++++++++++++ .../io7m/jwheatsheaf/ui/JWFileChooser.java | 2 +- .../internal/JWFileChooserViewController.java | 54 ++++---- 5 files changed, 180 insertions(+), 27 deletions(-) create mode 100644 com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserSelectionModeTest.java diff --git a/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChooserConfigurationDefaults.java b/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChooserConfigurationDefaults.java index 0b85773..824d55d 100644 --- a/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChooserConfigurationDefaults.java +++ b/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChooserConfigurationDefaults.java @@ -16,9 +16,11 @@ package com.io7m.jwheatsheaf.api; +import java.nio.file.Path; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; import java.time.format.SignStyle; +import java.util.function.Function; import static java.time.temporal.ChronoField.DAY_OF_MONTH; import static java.time.temporal.ChronoField.HOUR_OF_DAY; @@ -64,6 +66,18 @@ public static DateTimeFormatter fileTimeFormatter() .toFormatter(); } + /** + * The default file selection mode. By default, any type of file (including + * directories) may be selected. + * + * @return A function that dictates whether the selected items may be + * returned. + */ + + public static Function fileSelectionMode() { + return (path) -> true; + } + /** * This is a basic file size formatter that displays fractional kilobyte, * megabyte, gigabyte, and terabyte values depending on sizes. diff --git a/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChooserConfigurationType.java b/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChooserConfigurationType.java index e56ee6a..b716863 100644 --- a/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChooserConfigurationType.java +++ b/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChooserConfigurationType.java @@ -22,10 +22,13 @@ import java.net.URL; import java.nio.file.FileSystem; +import java.nio.file.Files; +import java.nio.file.LinkOption; import java.nio.file.Path; import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Optional; +import java.util.function.Function; /** * The configuration information used to instantiate file choosers. @@ -92,6 +95,22 @@ public interface JWFileChooserConfigurationType List fileFilters(); + /** + * Sets a mode that prevents returning a file to the client if that file + * does not meet criteria returned by this method. For example, this may be + * used to prevent selecting directories by implementing a function that + * returns {@code true} when {@link Files#isRegularFile(Path, LinkOption...)} + * returns {@code true}. + * + * @return The {@link Function} that accepts or rejects selected files + */ + + @Value.Default + default Function fileSelectionMode() + { + return JWFileChooserConfigurationDefaults.fileSelectionMode(); + } + /** * @return {@code true} if the UI will allow the creation of directories */ diff --git a/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserSelectionModeTest.java b/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserSelectionModeTest.java new file mode 100644 index 0000000..62979d4 --- /dev/null +++ b/com.io7m.jwheatsheaf.tests/src/test/java/com/io7m/jwheatsheaf/tests/JWFileChooserSelectionModeTest.java @@ -0,0 +1,118 @@ +/* + * Copyright © 2020 Mark Raynsford http://io7m.com + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package com.io7m.jwheatsheaf.tests; + +import com.io7m.jwheatsheaf.api.*; +import com.io7m.jwheatsheaf.ui.JWFileChoosers; +import javafx.stage.Stage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInfo; +import org.junit.jupiter.api.extension.ExtendWith; +import org.testfx.api.FxAssert; +import org.testfx.api.FxRobot; +import org.testfx.framework.junit5.ApplicationExtension; +import org.testfx.framework.junit5.Start; +import org.testfx.framework.junit5.Stop; +import org.testfx.matcher.base.NodeMatchers; + +import java.io.IOException; +import java.nio.file.FileSystem; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.TimeoutException; +import java.util.stream.Collectors; + +import static java.util.concurrent.TimeUnit.SECONDS; +import static org.testfx.util.WaitForAsyncUtils.waitFor; + +@ExtendWith(ApplicationExtension.class) +public final class JWFileChooserSelectionModeTest +{ + private JWTestFilesystems filesystems; + private FileSystem dosFilesystem; + private JWFileChooserType chooser; + private List events; + private JWFileChoosersType choosers; + + @Start + public void start(final Stage stage) + throws Exception + { + this.events = Collections.synchronizedList( new ArrayList<>()); + + this.filesystems = JWTestFilesystems.create(); + final var systems = this.filesystems.filesystems(); + this.dosFilesystem = systems.get("ExampleDOS"); + + final var configuration = + JWFileChooserConfiguration.builder() + .setAllowDirectoryCreation(true) + .setAction( JWFileChooserAction.OPEN_EXISTING_SINGLE) + .setFileSystem(this.dosFilesystem) + .setInitialFileName("README.TXT") + .build(); + + this.choosers = JWFileChoosers.create(); + this.chooser = this.choosers.create(stage, configuration); + this.chooser.setEventListener(event -> this.events.add(event)); + this.chooser.show(); + } + + @Stop + public void stop() + throws IOException + { + this.choosers.close(); + } + + /** + * Supplying an initial filename allows instantly selecting a file. + * + * @param robot The FX test robot + */ + + @Test + public void test( + final FxRobot robot, + final TestInfo info) + throws TimeoutException + { + final var okButton = + robot.lookup("#fileChooserOKButton") + .queryButton(); + final var textField = + robot.lookup("#fileChooserNameField") + .queryTextInputControl(); + + //waitFor(3L, SECONDS, () -> !textField.textProperty().get().isEmpty()); + FxAssert.verifyThat( okButton, NodeMatchers.isEnabled()); + robot.sleep(1L, SECONDS); + robot.clickOn(okButton); + + Assertions.assertEquals( + List.of( "Z:\\USERS\\GROUCH\\README.TXT"), + this.chooser.result() + .stream() + .map( Path::toString) + .collect( Collectors.toList()) + ); + Assertions.assertEquals(0, this.events.size()); + } +} diff --git a/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/JWFileChooser.java b/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/JWFileChooser.java index 0dc1beb..96e1537 100644 --- a/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/JWFileChooser.java +++ b/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/JWFileChooser.java @@ -52,7 +52,7 @@ public void setEventListener( public List showAndWait() { this.window.showAndWait(); - return this.viewController.result(); + return result(); } @Override diff --git a/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/internal/JWFileChooserViewController.java b/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/internal/JWFileChooserViewController.java index 5196d40..610c10c 100644 --- a/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/internal/JWFileChooserViewController.java +++ b/com.io7m.jwheatsheaf.ui/src/main/java/com/io7m/jwheatsheaf/ui/internal/JWFileChooserViewController.java @@ -17,12 +17,7 @@ package com.io7m.jwheatsheaf.ui.internal; import com.io7m.jaffirm.core.Preconditions; -import com.io7m.jwheatsheaf.api.JWDirectoryCreationFailed; -import com.io7m.jwheatsheaf.api.JWFileChooserConfiguration; -import com.io7m.jwheatsheaf.api.JWFileChooserEventType; -import com.io7m.jwheatsheaf.api.JWFileChooserFilterType; -import com.io7m.jwheatsheaf.api.JWFileImageSetType; -import com.io7m.jwheatsheaf.api.JWFileListingFailed; +import com.io7m.jwheatsheaf.api.*; import com.io7m.jwheatsheaf.ui.JWFileChoosers; import javafx.application.Platform; import javafx.beans.property.ReadOnlyObjectWrapper; @@ -31,19 +26,7 @@ import javafx.collections.FXCollections; import javafx.fxml.FXML; import javafx.scene.Node; -import javafx.scene.control.Button; -import javafx.scene.control.ChoiceBox; -import javafx.scene.control.ComboBox; -import javafx.scene.control.Label; -import javafx.scene.control.ListCell; -import javafx.scene.control.ListView; -import javafx.scene.control.ProgressIndicator; -import javafx.scene.control.SelectionMode; -import javafx.scene.control.TableCell; -import javafx.scene.control.TableColumn; -import javafx.scene.control.TableView; -import javafx.scene.control.TextField; -import javafx.scene.control.TextInputDialog; +import javafx.scene.control.*; import javafx.scene.input.MouseEvent; import javafx.scene.layout.Pane; import javafx.util.Callback; @@ -55,10 +38,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.attribute.FileTime; -import java.util.ArrayList; -import java.util.List; -import java.util.NoSuchElementException; -import java.util.Objects; +import java.util.*; import java.util.concurrent.BlockingDeque; import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingDeque; @@ -528,6 +508,8 @@ private void onCreateDirectoryButton() @FXML private void onOKSelected() { + this.result = List.of(); + switch (this.configuration.action()) { case OPEN_EXISTING_MULTIPLE: case OPEN_EXISTING_SINGLE: @@ -544,8 +526,15 @@ private void onOKSelected() break; } - final var window = this.mainContent.getScene().getWindow(); - window.hide(); + this.result = + this.result.stream() + .filter(this::filterSelectionMode) + .collect(Collectors.toList()); + + if(!this.result().isEmpty()) { + final var window = this.mainContent.getScene().getWindow(); + window.hide(); + } } @FXML @@ -679,11 +668,24 @@ private boolean fileNameNotEmpty() return !this.fileName.getText().isEmpty(); } + /** + * Answers whether the given {@link Path} may be returned to the client. + * + * @param path A file selected in the user interface. + * @return {@code true} if the given {@link Path} is an acceptable selection. + */ + + private boolean filterSelectionMode(final Path path) { + return this.configuration.fileSelectionMode().apply( path ); + } + private boolean atLeastOneItemSelected() { return this.directoryTable.getSelectionModel() .getSelectedItems() - .size() >= 1; + .stream() + .filter(file -> filterSelectionMode(file.path())) + .count() >= 1; } private void onTableRowClicked( From af9be6b94473df7c007859b590ed268636746020 Mon Sep 17 00:00:00 2001 From: Mark Raynsford Date: Sun, 11 Apr 2021 13:12:53 +0000 Subject: [PATCH 23/63] Implement a "home" button If a home directory path is provided to the chooser configuration, a home button will be shown that navigates directly to the home directory. Fix: https://github.com/io7m/jwheatsheaf/issues/12 --- README.in | 1 + .../api/JWFileChooserConfigurationType.java | 9 ++++ .../jwheatsheaf/api/JWFileImageSetType.java | 6 +++ .../examples/ExampleInverseIconSet.java | 6 +++ .../examples/ExampleViewController.java | 14 +++++ .../io7m/jwheatsheaf/examples/example.fxml | 7 +++ .../com/io7m/jwheatsheaf/examples/home.png | Bin 0 -> 267 bytes .../jwheatsheaf/oxygen/JWOxygenIconSet.java | 6 +++ .../io7m/jwheatsheaf/oxygen/package-info.java | 2 +- .../com/io7m/jwheatsheaf/oxygen/go-home.png | Bin 0 -> 635 bytes .../jwheatsheaf/tests/JWFileChooserTest.java | 50 ++++++++++++++++++ .../jwheatsheaf/tests/JWTestFilesystems.java | 2 + .../internal/JWFileChooserViewController.java | 27 ++++++++++ .../ui/internal/JWFileImageDefaultSet.java | 6 +++ .../ui/internal/Strings.properties | 1 + .../io7m/jwheatsheaf/ui/internal/chooser.fxml | 42 ++++++++++----- .../com/io7m/jwheatsheaf/ui/internal/home.png | Bin 0 -> 630 bytes .../io7m/jwheatsheaf/ui/internal/icons.kra | Bin 571987 -> 560989 bytes 18 files changed, 166 insertions(+), 13 deletions(-) create mode 100644 README.in create mode 100644 com.io7m.jwheatsheaf.examples/src/main/resources/com/io7m/jwheatsheaf/examples/home.png create mode 100644 com.io7m.jwheatsheaf.oxygen/src/main/resources/com/io7m/jwheatsheaf/oxygen/go-home.png create mode 100644 com.io7m.jwheatsheaf.ui/src/main/resources/com/io7m/jwheatsheaf/ui/internal/home.png diff --git a/README.in b/README.in new file mode 100644 index 0000000..ac0db81 --- /dev/null +++ b/README.in @@ -0,0 +1 @@ +An alternative to JavaFX's FileChooser that aims to be feature-compatible, if not fully API-compatible. diff --git a/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChooserConfigurationType.java b/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChooserConfigurationType.java index e56ee6a..1935185 100644 --- a/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChooserConfigurationType.java +++ b/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileChooserConfigurationType.java @@ -57,6 +57,15 @@ public interface JWFileChooserConfigurationType Optional initialDirectory(); + /** + * The directory to which the chooser will navigate when the user clicks + * the "home" button. If no path is specified, the button is not shown. + * + * @return The user's home directory + */ + + Optional homeDirectory(); + /** * @return The file name initially entered into the selection field */ diff --git a/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileImageSetType.java b/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileImageSetType.java index 7482747..f21eb31 100644 --- a/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileImageSetType.java +++ b/com.io7m.jwheatsheaf.api/src/main/java/com/io7m/jwheatsheaf/api/JWFileImageSetType.java @@ -43,6 +43,12 @@ public interface JWFileImageSetType URL forDirectoryUp(); + /** + * @return An icon for the "home" button + */ + + URL forHome(); + /** * @return An icon for the "recent items" entry */ diff --git a/com.io7m.jwheatsheaf.examples/src/main/java/com/io7m/jwheatsheaf/examples/ExampleInverseIconSet.java b/com.io7m.jwheatsheaf.examples/src/main/java/com/io7m/jwheatsheaf/examples/ExampleInverseIconSet.java index 94a104c..7d1709a 100644 --- a/com.io7m.jwheatsheaf.examples/src/main/java/com/io7m/jwheatsheaf/examples/ExampleInverseIconSet.java +++ b/com.io7m.jwheatsheaf.examples/src/main/java/com/io7m/jwheatsheaf/examples/ExampleInverseIconSet.java @@ -63,6 +63,12 @@ public URL forDirectoryUp() return forName("goUp.png").orElseThrow(); } + @Override + public URL forHome() + { + return forName("home.png").orElseThrow(); + } + @Override public URL forRecentItems() { diff --git a/com.io7m.jwheatsheaf.examples/src/main/java/com/io7m/jwheatsheaf/examples/ExampleViewController.java b/com.io7m.jwheatsheaf.examples/src/main/java/com/io7m/jwheatsheaf/examples/ExampleViewController.java index bbe302a..75704ea 100644 --- a/com.io7m.jwheatsheaf.examples/src/main/java/com/io7m/jwheatsheaf/examples/ExampleViewController.java +++ b/com.io7m.jwheatsheaf.examples/src/main/java/com/io7m/jwheatsheaf/examples/ExampleViewController.java @@ -64,6 +64,8 @@ public final class ExampleViewController implements Initializable @FXML private CheckBox slowIO; @FXML + private CheckBox homeDirectory; + @FXML private ChoiceBox action; @FXML private TextField title; @@ -135,6 +137,12 @@ private void onSlowIOChanged() } + @FXML + private void onHomeDirectoryChanged() + { + + } + @FXML private void onOpenSelected() throws IOException @@ -164,6 +172,12 @@ private void onOpenSelected() .addFileFilters(new ExampleFilterXML()) .addAllRecentFiles(recents); + if (this.homeDirectory.isSelected()) { + configurationBuilder.setHomeDirectory( + fileSystem.getPath(System.getProperty("user.home")) + ); + } + if (!this.title.getText().isEmpty()) { configurationBuilder.setTitle(this.title.getText()); } diff --git a/com.io7m.jwheatsheaf.examples/src/main/resources/com/io7m/jwheatsheaf/examples/example.fxml b/com.io7m.jwheatsheaf.examples/src/main/resources/com/io7m/jwheatsheaf/examples/example.fxml index de118c4..603ba7f 100644 --- a/com.io7m.jwheatsheaf.examples/src/main/resources/com/io7m/jwheatsheaf/examples/example.fxml +++ b/com.io7m.jwheatsheaf.examples/src/main/resources/com/io7m/jwheatsheaf/examples/example.fxml @@ -41,6 +41,13 @@ + + + + + + +