This enhances the `Builder` pattern added in
[JDK-8294535](https://bugs.openjdk.org/browse/JDK-8294535) with a new method
`testUI` which allows passing a lambda expression or a method reference to
create *the test UI window*.
The `PassFailJFrame` will automatically call the method on the EDT to create
the UI, add it to the internal list of windows, install the window closing
listener and finally position and show both the instructions and test UI.
Alternatively, you can pass an already created window.
The `main` method of a manual test could look as simple as a sequence of calls:
public static void main(String[] args) throws Exception {
PassFailJFrame.builder()
.instructions(INSTRUCTIONS)
.testUI(() -> createTestUI())
.build()
.awaitAndCheck();
}
where `createTestUI` returns a test UI window.
-------------
Depends on: https://git.openjdk.org/jdk/pull/15660
Commit messages:
- Remove trailing whitespace
- Mark the Builder class final
- Amend message in window closing handler
- Use invokeOnEDT in getInstructionFrameBounds
- Use functional style for disposing of windows
- Use statically imported invokeAndWait and isEDT
- Build functional test UI
- Refactor windowClosing listener
Changes: https://git.openjdk.org/jdk/pull/15665/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=15665&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8294156
Stats: 125 lines in 1 file changed: 91 ins; 20 del; 14 mod
Patch: https://git.openjdk.org/jdk/pull/15665.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/15665/head:pull/15665
PR: https://git.openjdk.org/jdk/pull/15665