On Wed, 27 Apr 2022 04:36:27 GMT, Harshitha Onkar <d...@openjdk.java.net> wrote:

>> Previously while tabbing through the JTable cell, the cell highlighter/focus 
>> ring was not visible against the selection background. 
>> 
>> Changes are made to Aqua LAF to derive a lighter focus ring color by 
>> changing saturation and setting brightness component to 100% of original 
>> focus ring color so that it is visible while tabbing through `JTable` cells. 
>> A new method is added for this purpose which takes in `focusRingColor`, does 
>> adjustment to saturation and brightness and returns a new focus ring color. 
>> There are edge cases where the HSB transformation does not yield the right 
>> focus ring color, for these cases a default color is returned.
>> 
>> A test case is added to compare the RGB difference between the original 
>> focus ring color & selection background and the new focus ring color & 
>> selection background. A note on the test case, since the test case is 
>> automated it tests the cell focus ring with colors loaded during the start 
>> of program execution and any on-the-fly accent color changes were tested 
>> manually.
>> 
>> **Edge Cases**
>> ![image](https://user-images.githubusercontent.com/95945681/161360456-3929acf1-282b-4c2b-95d1-1d5707c1e238.png)
>> 
>> The edge case condition consists of two parts –
>> 
>> - To handle white/black colors - (hsbValues[0] == 0 && hsbValues[1] == 0) - 
>> representing hue and saturation of zero obtained for black, white or exactly 
>> grey (red=green=color) conditions
>> 
>> 
>> - To handle grayish colors - hsbValues[1] <= satGrayScale where satGrayScale 
>> <= 0.10 . For any given hue and brightness, a saturation of less than or 
>> equal to 10% represents grayish tint colors. (The second case was added to 
>> accommodate grayish focus ring color returned by system when Accent color = 
>> Graphite.  The returned color is not exactly gray but grayish (r=135, g=135, 
>> b=140)). To accommodate a more generic case of grayish colors, the 
>> satGrayScale has a threshold or tolerance of 0.10 or 10%. 
>> 
>> Used the following resources to test out different grayish colors and 
>> optimal saturation offsets used in  `deriveLighterFocusRing()`.
>> 
>> - [RapidTables](https://www.rapidtables.com/convert/color/rgb-to-hsl.html) 
>> - [Colorizer](http://colorizer.org/).
>> - [Chart Link](https://codepen.io/HunorMarton/details/eWvewo)
>> 
>> **A note on the system-colors:** 
>> 
>> _For Mac 10.14 below:_
>> [keyboardfocusindicatorcolor](https://developer.apple.com/documentation/appkit/nscolor/1532031-keyboardfocusindicatorcolor)
>> Issue: Works well for most of the scenarios (including on-the-fly changes) 
>> and follows the accent color changes except when we start the application 
>> with accent color set to Graphite and then change accent color on-the-fly 
>> The cell focus ring remains gray. The issue is with the system color 
>> returned by the type-property "keyboardfocusindicatorcolor" under this 
>> setting and NOT a JDK product bug.
>> 
>> _For Mac 10.14+:_
>> [controlAccentColor](https://developer.apple.com/documentation/appkit/nscolor/3000782-controlaccentcolor)
>> is available and it follows accent color changes (even when application 
>> started with Graphite as accent color). The proposed fix uses this type 
>> property when mac version is 10.14+
>> 
>> PS: The native L&F (Mac OS) and Swing L&F for JTable cell tabbing differs 
>> (on native tables the cell background turns white on focus with a cell focus 
>> ring). Since the background for Swing tables can be set by users and also 
>> overridden by subclassing `DefaultTableCellRenderer`, and to adhere to 
>> current implementation of Swing, the white cell background changes are not 
>> incorporated. Only the Focus Ring/ Cell Highlighter is made more prominent.
>
> Harshitha Onkar has updated the pull request with a new target base due to a 
> merge or a rebase. The incremental webrev excludes the unrelated changes 
> brought in by the merge/rebase. The pull request contains 14 additional 
> commits since the last revision:
> 
>  - Merge branch 'master' into focusRing_7124282
>  - chnaged variable name
>  - added new color to CSystemColors.m - CELL_HIGHLIGHT_COLOR
>  - Merge branch 'master' into focusRing_7124282
>  - added new type property and changed method name
>  - Merge branch 'master' into focusRing_7124282
>  - added more generic condition for edge case and formatted line lengths
>  - Merge branch 'openjdk:master' into focusRing_7124282
>  - on-the-fly focus ring color changes added
>  - updated deriveContrastFocusRing method
>  - ... and 4 more: 
> https://git.openjdk.java.net/jdk/compare/b74bd325...e82a1ca0

Marked as reviewed by prr (Reviewer).

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

PR: https://git.openjdk.java.net/jdk/pull/7768

Reply via email to