On Fri, 3 Feb 2023 17:26:22 GMT, Harshitha Onkar <[email protected]> wrote:

>> FrameBorder and DialogBorder had border scaling issues similar to 
>> JInternalFrame. This fix addresses it by creating `AbstractMetalBorder` 
>> class within MetalBorder, that contains the common steps required for 
>> painting border for `FrameBorder`, `DialogBorder` and `InternalFrameBorder`. 
>> 
>> All 3 cases - JFrame, JDialog and JInternalFrame are combined into a single 
>> test case - `ScaledMetalBorderTest` and hence the older 
>> `InternalFrameBorderTest` which is no longer required, is deleted.
>
> Harshitha Onkar has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   minor change

src/java.desktop/share/classes/javax/swing/plaf/metal/MetalBorders.java line 
239:

> 237: 
> 238:     @SuppressWarnings("serial")
> 239:     private abstract static sealed class AbstractMetalBorder

Suggestion:

    private abstract static sealed class AbstractMetalWindowBorder

or
Suggestion:

    private abstract static sealed class MetalWindowBorder

So that it's the class name is more specific: it applies only to window-like 
objects: Frame, Dialog and Internal Frame.

src/java.desktop/share/classes/javax/swing/plaf/metal/MetalBorders.java line 
255:

> 253:             SwingUtilities3.paintBorder(c, g,
> 254:                     x, y, w, h,
> 255:                     this::paintUnscaledBorder);

It's a matter of preference, however, I prefer the previous style where 
parameters are aligned after the opening parenthesis.

src/java.desktop/share/classes/javax/swing/plaf/metal/MetalBorders.java line 
272:

> 270:         protected abstract boolean isActive(Component c);
> 271: 
> 272:         protected abstract boolean isResizable(Component c);

What do you think if we declare these two abstract methods above 
`updateColors`? Or just `isActive` method?

It may help to understand the code inside `updateColors`.

It's not a strong suggestion.

src/java.desktop/share/classes/javax/swing/plaf/metal/MetalBorders.java line 
291:

> 289:                 //are positioned on the border
> 290:                 int midPoint = thickness / 2;
> 291:                 int stkWidth = clipRound(scaleFactor);

It's not part of this changeset, yet is possible to spell it out? When words 
spelled fully, like `strokeWidth`, they're easier to understand.

Maybe do it under a separate issue to make this one cleaner.

src/java.desktop/share/classes/javax/swing/plaf/metal/MetalBorders.java line 
359:

> 357:         }
> 358: 
> 359:         public void paintBorder(Component c, Graphics g, int x, int y,

Let's add `@Override`?

src/java.desktop/share/classes/javax/swing/plaf/metal/MetalBorders.java line 
364:

> 362:         }
> 363: 
> 364:         public Insets getBorderInsets(Component c, Insets newInsets) {

Let's add @Override?

src/java.desktop/share/classes/javax/swing/plaf/metal/MetalBorders.java line 
375:

> 373:      */
> 374:     @SuppressWarnings("serial") // Superclass is not serializable across 
> versions
> 375:     static final class FrameBorder extends AbstractMetalBorder 
> implements UIResource {

If the class isn't used anywhere but `MetalBorders` class, does it make sense 
to declare the class `private`? I think it does, it conveys that this class is 
used only here.

This applies to other classes too.

src/java.desktop/share/classes/javax/swing/plaf/metal/MetalBorders.java line 
396:

> 394:      */
> 395:     @SuppressWarnings("serial") // Superclass is not serializable across 
> versions
> 396:     static sealed class DialogBorder

Probably `DialogBorder` should extend `FrameBorder` to inherit and re-use 
`isActive` and `isResizable` methods: they're the same in both classes.

src/java.desktop/share/classes/javax/swing/plaf/metal/MetalBorders.java line 
401:

> 399:             permits ErrorDialogBorder, QuestionDialogBorder, 
> WarningDialogBorder {
> 400: 
> 401:         protected Color getActiveBackground() {

Either leave the opening brace on its own line it used to be, or update the 
style for the following methods as well.

test/jdk/javax/swing/plaf/metal/MetalBorders/ScaledMetalBorderTest.java line 
167:

> 165: 
> 166:     private static void runTests(String windowType) throws 
> InterruptedException,
> 167:                                                          
> InvocationTargetException {

Suggestion:

    private static void runTests(String windowType) throws InterruptedException,
                                                           
InvocationTargetException {

Should they rather be aligned?

test/jdk/javax/swing/plaf/metal/MetalBorders/ScaledMetalBorderTest.java line 
318:

> 316:         jDialog.setLayout(new GridBagLayout());
> 317:         jDialog.getContentPane().add(scale);
> 318:         jDialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

Suggestion:

        jDialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

Would be more logical.

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

PR: https://git.openjdk.org/jdk/pull/12391

Reply via email to