RFR: JDK-8294680: Refactor scaled border rendering

Alan Snyder javalists at cbfiddle.com
Wed Dec 7 21:53:06 UTC 2022


Is there some reason why this should not be a public API?

Do you believe that only JDK-implemented borders need this functionality?


> On Dec 7, 2022, at 1:44 PM, Harshitha Onkar <honkar at openjdk.org> wrote:
> 
> In this fix, the common code required for scaled border rendering is unified and added to SwingUtilities3. This is achieved by adding a functional interface to SwingUtilities3 and calling the the respective paintBorder function passed as parameter to method.  
> 
> The following steps are common for any border scaling -
> 
> - Resetting transform.
> - Calculating new width, height, x & y-translations.
> - Perform the required border rendering. 
> - And at the end restore the previous transform.
> 
> To test the refactored code, 3 separate border scaling instances were taken (details below) and the SwingUtilities3.paintBorder, (containing the common functionality) was applied. All the tests associated with the respective border changes pass.
> 
> 1. EtchedBorder - [PR#7449](https://github.com/openjdk/jdk/pull/7449) - Test: ScaledEtchedBorderTest.java
> 2. LineBorder - [PR#10681](https://github.com/openjdk/jdk/pull/10681) - Test: ScaledLineBorderTest & ScaledTextFieldBorderTest.java
> 3. JInternalFrame Border - [PR#10274](https://github.com/openjdk/jdk/pull/10274) - Test: InternalFrameBorderTest.java
> 
> The advantage of this solution is - it avoids code repetition and can be reused across all the border classes requiring border scaling fix.
> 
> -------------
> 
> Commit messages:
> - Refactoring changes
> - Merge branch 'master' into RefactorBorder_8294484
> - revert MetalBorder changes
> - merge master
> - refactoring changes - initial commit
> 
> Changes: https://git.openjdk.org/jdk/pull/11571/files
> Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=11571&range=00
>  Issue: https://bugs.openjdk.org/browse/JDK-8294680
>  Stats: 272 lines in 4 files changed: 94 ins; 146 del; 32 mod
>  Patch: https://git.openjdk.org/jdk/pull/11571.diff
>  Fetch: git fetch https://git.openjdk.org/jdk pull/11571/head:pull/11571
> 
> PR: https://git.openjdk.org/jdk/pull/11571
> 




More information about the client-libs-dev mailing list