On Fri, 27 Sep 2024 14:48:20 GMT, Alexey Ivanov <[email protected]> wrote:
>> With the instruction frame exposed, it would be possible to create owned
>> modeless `JDialog` or `Dialog` instead of `JFrame` and `Frame` which has a
>> great benefit: all the windows are brought to the top when you switch back
>> to the test from another application. And there's only a single window on
>> the taskbar for the test.
>>
>> I've been thinking about adding helper methods `createOwnedJDialog` and
>> `createOwnedDialog` to cover this use case.
>>
>> Currently, it's possible to host test UI in a modeless dialog if you use
>> `testUI` with `PanelCreator` that is pass a method which creates
>> `JComponent`. I admit I like navigating the UI much easier in this case.
>
>> If you call `.position(PassFailJFrame.Position.TOP_LEFT_CORNER)` after
>> `.positionTestUIRightRow`, it is respected.
>
> Perhaps, this behaviour should be called out in the docs somewhere. All
> `.positionTestUIRight*` as well as `.positionTestUIBottom*` *implicitly* set
> the position.
> You can do it by using the InstructionUI interface that's passed to you when
> you implement a custom layout.
But it cannot be combined with the newly added methods like:
PassFailJFrame.builder()
.instructions(INSTRUCTIONS)
.rows(15)
.columns(30)
.testUI(() -> WindowCreator.createTestWindows(3))
.positionTestUI((testWindows, instructionUI) ->
instructionUI.setLocation(200, 200))
// or add a new method like
//.instructionFrameLocation(200, 200)
.positionTestUIRightRow()
.build()
.awaitAndCheck();
The idea is to make it very simple without having to implement the
`positionTestUI` interface (I am not talking about exposing the frame, see the
snippet above).
Like place the instruction frame here, and layout other windows relative to it.
But I agree it is a rare case.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/21207#discussion_r1778744890