> **Note:** please also read [this > document](https://gist.github.com/mstr2/9f46f92c98d3c86aa6a0b4224a9a6548) to > learn about how the platform preferences API interacts with the proposed > `StyleTheme` and `Stage.appearance` features. > > 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 with a new target base due to a merge or a rebase. The pull request now contains 31 commits: - Merge branch 'master' into feature/platform-preferences - Use Optional for convenience methods in Preferences - refactored PlatformPreferencesImpl - javadoc - Added appearance and convenience platform properties - Removed StyleTheme implementation - update javadoc - update javadoc - Rename Application.styleTheme to userAgentStyleTheme - Changed GTK preference keys - ... and 21 more: https://git.openjdk.org/jfx/compare/e1f7d0c4...3728cdf0 ------------- Changes: https://git.openjdk.org/jfx/pull/1014/files Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=1014&range=02 Stats: 2412 lines in 28 files changed: 2312 ins; 58 del; 42 mod Patch: https://git.openjdk.org/jfx/pull/1014.diff Fetch: git fetch https://git.openjdk.org/jfx pull/1014/head:pull/1014 PR: https://git.openjdk.org/jfx/pull/1014
