On Thu, 14 Sep 2023 14:53:08 GMT, Alexey Ivanov <[email protected]> wrote:

>> test/jdk/java/awt/Window/8294156/manyWindows/TwoWindowColumnsH.java line 96:
>> 
>>> 94:     private static final int COLUMNS = 3;
>>> 95: 
>>> 96:     public static void positionTestUI(List<? extends Window> windows,
>> 
>> When I thought about adding more than one window, I thought about simply 
>> placing everything in a row.
>> 
>> Looking at all this I have mixed feelings.
>> On the one hand a person using all this for the first time will have to 
>> spend some time to understand how it works, or take the easy way out and 
>> manually arrange the windows.
>> On the other hand, the result is impressive, and can make life easier if you 
>> don't have to write positionTestUI every time. 
>> 
>> I think if we do go this way, we should add some standard positionTestUI 
>> implementations to PassFailJFrame so that we don't have to reinvent the 
>> wheel every time.
>> 
>> It is also worth considering that looks like we don't have many tests with 
>> more than 2-3 windows.
>
> Isn't it the problem? If we allow adding more than one window, there should 
> be a way to position them… as we have a way to position one test window. Do 
> you agree?
> 
>> When I thought about adding more than one window, I thought about simply 
>> placing everything in a row.
> 
> This is pretty easy. If you look at `TwoWindowsHH.java`  
> https://github.com/openjdk/jdk/blob/4c0e4d097e3a484698bee0356ba36557ccc9e96c/test/jdk/java/awt/Window/8294156/twoWindows/TwoWindowsHH.java#L64-L69
> 
> It implements positioning of test windows in a row, either to the right of 
> the instructions or below it.
> 
> Then `TwoWindowsHV.java` does the same for placing test windows in a column 
> to the right or below the instructions.
> 
> This still requires refinement.
> 
>> Looking at all this I have mixed feelings.
> 
> I do too. 
> 
> When Lawrence @lawrence-andrew and I started on the manual test framework 
> ([JDK-8283712](https://bugs.openjdk.org/browse/JDK-8283712)), I envisioned it 
> as something light that provided a quick and easy replacement for 
> applet-based manual Yes/No test, that also gave a unified look to manual 
> tests. If I remember correctly, we took inspiration from your code. ;)
> 
> As new scenarios emerged, the framework grew… Yet it wasn't as easy to use, 
> it still required manually creating test UI, registering test windows. The 
> idea of disposing of all the frames was rejected on [the code 
> review](https://github.com/openjdk/jdk/pull/7966#discussion_r835700911).
> 
> I truly believe Lawrence's idea of the builder pattern 
> ([JDK-8294535](https://bugs.openjdk.org/browse/JDK-8294535)) is a 
> *game-changer*. With the addition of the `testUI` method, the entire `main` 
> method becomes simple, *streamlined*. I think it makes using the framework 
> easier.
> 
> I had this idea of passing a method reference to create a test window from 
> the start. But I never thought about supporting two test windows or more.
> 
> As you can see, handling one test window is much simpler, the internals have 
> grown dramatically with multiple windows.
> 
> At the same time, I must **thank you** for raising this problem. Adding 
> support for multiple windows would've been harder if I'd handled only one 
> test window.
> 
>> On the one hand a person using all this for the first time will have to 
>> spend some time to understand how it works, or take the easy way out and 
>> manually arrange the windows.
> 
> The hardest part is making it easy to use… and flexible at the same time.
> 
> Manually arranging windows could be easier as the developer knows more about 
> their intentions. Ha...

> > …We should add some standard positionTestUI implementations to 
> > PassFailJFrame so that we don't have to reinvent the wheel every time.
> 
> I didn't even think about not providing any default implementations of 
> `positionTestUI` — that's the idea! The framework should support simple 
> layouts.

I submitted an enhancement 
[JDK-8317116](https://bugs.openjdk.org/browse/JDK-8317116): _Provide layouts 
for multiple test UI in `PassFailJFrame`_.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/15721#discussion_r1338928149

Reply via email to