On Tue, 5 Sep 2023 00:55:44 GMT, Michael Strauß <mstra...@openjdk.org> wrote:

>> Please read [this 
>> document](https://gist.github.com/mstr2/9f46f92c98d3c86aa6a0b4224a9a6548) 
>> for an introduction to the Platform Preferences API, and how it interacts 
>> with the proposed style theme and stage appearance features.
>
> Michael Strauß has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Removed application preferences implementation

modules/javafx.graphics/src/main/java/com/sun/glass/ui/Application.java line 
762:

> 760:      */
> 761:     public Map<String, Object> getPlatformPreferences() {
> 762:         return Map.of();

Should javadoc explicitly proclaim that the map is immutable?

modules/javafx.graphics/src/main/java/com/sun/javafx/application/PlatformImpl.java
 line 1081:

> 1079:     public static void updatePreferences(Map<String, Object> 
> preferences) {
> 1080:         if (isFxApplicationThread()) {
> 1081:             checkHighContrastThemeChanged(preferences);

is this needed in this preferences-only PR?

modules/javafx.graphics/src/main/java/com/sun/javafx/application/PlatformImpl.java
 line 1093:

> 1091: 
> 1092:     // This method will be removed when StyleThemes are added.
> 1093:     private static void checkHighContrastThemeChanged(Map<String, 
> Object> preferences) {

is this needed?

modules/javafx.graphics/src/main/java/com/sun/javafx/application/preferences/ChangedValue.java
 line 47:

> 45:      * @return a mapping of keys to changed values
> 46:      */
> 47:     public static Map<String, ChangedValue> 
> getEffectiveChanges(Map<String, Object> old, Map<String, Object> current) {

this class does not handle addition of keys in `current` - should we explain 
this fact in this method and/or the class javadoc?

modules/javafx.graphics/src/main/java/com/sun/javafx/application/preferences/PlatformPreferences.java
 line 112:

> 110:         }
> 111: 
> 112:         throw new IllegalArgumentException(

should this behavior be documented?
there is no mention of an exception in case of type mismatch in the base class.

also, do we want to have some kind of trivial conversion implemented such as 
int -> long -> double ?  
or not?

modules/javafx.graphics/src/main/java/com/sun/javafx/application/preferences/PreferenceProperties.java
 line 118:

> 116:         }
> 117: 
> 118:         fireValueChangedEvent();

It looks like this will fire `colorProperty.fireValueChangedEvent();` for all 
colors in `allColors`, even when none has changed.
edit: I see what you did here.  Contrary to it's name, `fireValueChangeEvent` 
does not always fire.  Perhaps we could rename the method to 
fireValueChangeEventIfChanged/Maybe or some such?

modules/javafx.graphics/src/main/java/com/sun/javafx/application/preferences/PreferenceProperties.java
 line 197:

> 195: 
> 196:         private void updateEffectiveValue() {
> 197:             // Choose the first non-null value in this order: 
> overrideValue, platformValue, defaultValue.

are null default values allowed?

modules/javafx.graphics/src/main/java/javafx/application/Application.java line 
35:

> 33: import javafx.css.Stylesheet;
> 34: import javafx.scene.Scene;
> 35: import javafx.scene.paint.Color;

strictly speaking, this file should be unchanged.

modules/javafx.graphics/src/main/java/javafx/application/Platform.java line 448:

> 446:      * by JavaFX when the operating system reports that a platform 
> preference has changed.
> 447:      *
> 448:      * @return the {@code Preferences} instance

minor: make it a link or add a line with a link to the comment itself saying 
something like
`Please refer to { @ link Preferences } javadoc for a list of expected 
preferences.`

modules/javafx.graphics/src/test/java/test/com/sun/javafx/application/preferences/PlatformPreferencesTest.java
 line 41:

> 39: 
> 40: import static org.junit.jupiter.api.Assertions.*;
> 41: import static test.javafx.collections.MockMapObserver.Tuple.tup;

this generates 9 errors in eclipse, starting with

Description     Resource        Type
The type test.javafx.collections.MockMapObserver.Tuple.tup is not accessible    
PlatformPreferencesTest.java    Java Problem

the following  change to graphics/.classpath should fix it (inc. complete file):


<?xml version="1.0" encoding="UTF-8"?>
<classpath>
        <classpathentry kind="src" path="src/main/java"/>
        <classpathentry kind="src" path="build/gensrc/jsl-prism"/>
        <classpathentry kind="src" path="build/gensrc/jsl-decora"/>
        <classpathentry kind="src" path="build/hlsl/Decora"/>
        <classpathentry kind="src" path="build/hlsl/Prism"/>
        <classpathentry kind="src" output="testbin" path="src/shims/java">
                <attributes>
                        <attribute name="test" value="true"/>
                </attributes>
        </classpathentry>
        <classpathentry kind="src" output="testbin" path="src/test/java">
                <attributes>
                        <attribute name="test" value="true"/>
                        <attribute name="optional" value="true"/>
                </attributes>
        </classpathentry>
        <classpathentry kind="src" path="src/main/resources">
                <attributes>
                        <attribute name="optional" value="true"/>
                </attributes>
        </classpathentry>
        <classpathentry kind="src" output="testbin" path="src/test/resources">
                <attributes>
                        <attribute name="test" value="true"/>
                        <attribute name="optional" value="true"/>
                </attributes>
        </classpathentry>
        <classpathentry combineaccessrules="false" kind="src" path="/base">
                <attributes>
                        <attribute name="module" value="true"/>
                        <attribute name="add-exports" 
value="javafx.base/com.sun.javafx.property=javafx.graphics:javafx.base/test.javafx.collections=javafx.graphics:javafx.base/test.util.memory=javafx.graphics"/>
                </attributes>
        </classpathentry>
        <classpathentry kind="con" 
path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5">
                <attributes>
                        <attribute name="test" value="true"/>
                </attributes>
        </classpathentry>
        <classpathentry kind="con" 
path="org.eclipse.jdt.launching.JRE_CONTAINER">
                <attributes>
                        <attribute name="module" value="true"/>
                        <attribute name="add-exports" 
value="java.base/sun.security.util=javafx.graphics"/>
                </attributes>
        </classpathentry>
        <classpathentry kind="output" path="bin"/>
</classpath>

tests/manual/events/PlatformPreferencesTest.java line 113:

> 111:         return "{\r\n\t" + entries + "\r\n}\r\n";
> 112:     }
> 113: 

extra newline?

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1014#discussion_r1316296127
PR Review Comment: https://git.openjdk.org/jfx/pull/1014#discussion_r1316302729
PR Review Comment: https://git.openjdk.org/jfx/pull/1014#discussion_r1316302948
PR Review Comment: https://git.openjdk.org/jfx/pull/1014#discussion_r1316305695
PR Review Comment: https://git.openjdk.org/jfx/pull/1014#discussion_r1316310131
PR Review Comment: https://git.openjdk.org/jfx/pull/1014#discussion_r1316313168
PR Review Comment: https://git.openjdk.org/jfx/pull/1014#discussion_r1316320186
PR Review Comment: https://git.openjdk.org/jfx/pull/1014#discussion_r1316322553
PR Review Comment: https://git.openjdk.org/jfx/pull/1014#discussion_r1316325117
PR Review Comment: https://git.openjdk.org/jfx/pull/1014#discussion_r1316336107
PR Review Comment: https://git.openjdk.org/jfx/pull/1014#discussion_r1316337291

Reply via email to