RFR: 8301302: Platform preferences API [v2]
Andy Goryachev
angorya at openjdk.org
Tue Jan 31 23:19:57 UTC 2023
On Sun, 29 Jan 2023 17:10:26 GMT, Michael Strauß <mstrauss at openjdk.org> wrote:
>> Platform preferences are the preferred UI settings of the operating system. For example, on Windows this includes the color values identified by the `Windows.UI.ViewManagement.UIColorType` enumeration; on macOS this includes the system color values of the `NSColor` class.
>>
>> Exposing these dynamic values to JavaFX applications allows developers to create themes that can integrate seamlessly with the color scheme of the operating system.
>>
>> Platform preferences are exposed as an `ObservableMap` of platform-specific key-value pairs, which means that the preferences available on Windows are different from macOS or Linux. JavaFX provides a small, curated list of preferences that are available on most platforms, and are therefore exposed with a platform-independent API:
>>
>>
>> public interface Preferences extends ObservableMap<String, Object> {
>> // Platform-independent API
>> ReadOnlyObjectProperty<Appearance> appearanceProperty();
>> ReadOnlyObjectProperty<Color> backgroundColorProperty();
>> ReadOnlyObjectProperty<Color> foregroundColorProperty();
>> ReadOnlyObjectProperty<Color> accentColorProperty();
>>
>> // Convenience methods to retrieve platform-specific values from the map
>> Optional<Integer> getInteger(String key);
>> Optional<Double> getDouble(String key);
>> Optional<String> getString(String key);
>> Optional<Boolean> getBoolean(String key);
>> Optional<Color> getColor(String key);
>> }
>>
>>
>> The platform appearance is defined by the new `javafx.stage.Appearance` enumeration:
>>
>>
>> public enum Appearance {
>> LIGHT,
>> DARK
>> }
>>
>>
>> An instance of the `Preferences` interface can be retrieved by calling `Platform.getPreferences()`.
>
> Michael Strauß has updated the pull request incrementally with one additional commit since the last revision:
>
> Use Optional for convenience methods in Preferences
mailing list ate a screenshot from the last message. here it is:
<img width="467" alt="Screenshot 2023-01-31 at 15 10 38" src="https://user-images.githubusercontent.com/107069028/215905602-1e656e6c-620f-4437-b041-11b6ebc46834.png">
-------------
PR: https://git.openjdk.org/jfx/pull/1014
More information about the openjfx-dev
mailing list