To do this the following restructuring is performed:
- Move decorations specific classes to darklaf-platform-decorations
- Move SystemInfo to darklaf-platform-base
- Move theme specification specific classes to darklaf-theme-spec
- Create new module darklaf-platform-preferences for the reporting related classes
Currently, the JDK doesn't correctly report the current operating system.
For now, we query the value ourselves using native code. This will be updated
once the JDK backport is available:
https://bugs.openjdk.java.net/browse/JDK-8274840
This allows us to move the dependency versions back into
gradle.properties so version for plugins and dependencies are declared
in a centralized way.
This commit also removes the legacy macOS framework dependencies.
Previously all boolean client properties installed by a Theme
were never overwritten if a different theme has different
values for them. We now parse non-boolean values when retrieving
a boolean property and properly mark the installed value as an
UIResource.
The values need to implement the SoftCache.Cacheable<K> interface
where K is the key type. By doing this they promise to keep a
reference to the key. Not doing so will eventually cause the value
from being removed from the cache.
We add a custom task to compile the module-info with a newer java version.
To ensure the module-info is correct we need to compile it together with all other project sources.
Instead of rejecting with all java version that support the module system we only do it for versions >= 16 as those actually enforce the encapsulation. We also offer an option to opt-in to the better version by passing appropriate jvm flags.
To do this properly we add new flags to SystemInfo indicating whether the current arch supports X86 or is an ARM/M1 based cpu. The X86 support detection is most definitely incorrect but will work for most common processors. Relates to #240