mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-06 14:00:55 +03:00
UIDefaultsLoader: changed .properties file loading order: now all core .properties files are loaded before loading addon .properties files, which makes it easier to overwrite core values in addons; also, addon loading order can be specified
This commit is contained in:
@@ -3,6 +3,9 @@ FlatLaf Change Log
|
||||
|
||||
## Unreleased
|
||||
|
||||
- Changed `.properties` file loading order: Now all core `.properties` files are
|
||||
loaded before loading addon `.properties` files. This makes it easier to
|
||||
overwrite core values in addons. Also, addon loading order can be specified.
|
||||
- TableHeader: Paint column borders if renderer has changed, but delegates to
|
||||
the system default renderer (e.g. done in NetBeans).
|
||||
|
||||
|
||||
@@ -45,8 +45,18 @@ public abstract class FlatDefaultsAddon
|
||||
*/
|
||||
public InputStream getDefaults( Class<?> lafClass ) {
|
||||
Class<?> addonClass = this.getClass();
|
||||
String propertiesName = "/" + addonClass.getPackage().getName().replace( '.', '/' )
|
||||
String propertiesName = '/' + addonClass.getPackage().getName().replace( '.', '/' )
|
||||
+ '/' + lafClass.getSimpleName() + ".properties";
|
||||
return addonClass.getResourceAsStream( propertiesName );
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the priority used to sort addon loading.
|
||||
* The order is only important if you want overwrite UI defaults of other addons.
|
||||
* Lower numbers mean higher priority.
|
||||
* Returns 10000 by default.
|
||||
*/
|
||||
public int getPriority() {
|
||||
return 10000;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,32 +84,41 @@ class UIDefaultsLoader
|
||||
|
||||
static void loadDefaultsFromProperties( List<Class<?>> lafClasses, UIDefaults defaults ) {
|
||||
try {
|
||||
List<ClassLoader> addonClassLoaders = new ArrayList<>();
|
||||
|
||||
// load properties files
|
||||
// load core properties files
|
||||
Properties properties = new Properties();
|
||||
ServiceLoader<FlatDefaultsAddon> addonLoader = ServiceLoader.load( FlatDefaultsAddon.class );
|
||||
for( Class<?> lafClass : lafClasses ) {
|
||||
// load core properties
|
||||
String propertiesName = "/" + lafClass.getName().replace( '.', '/' ) + ".properties";
|
||||
String propertiesName = '/' + lafClass.getName().replace( '.', '/' ) + ".properties";
|
||||
try( InputStream in = lafClass.getResourceAsStream( propertiesName ) ) {
|
||||
if( in != null )
|
||||
properties.load( in );
|
||||
}
|
||||
}
|
||||
|
||||
// load properties from addons
|
||||
for( FlatDefaultsAddon addon : addonLoader ) {
|
||||
// get addons and sort them by priority
|
||||
ServiceLoader<FlatDefaultsAddon> addonLoader = ServiceLoader.load( FlatDefaultsAddon.class );
|
||||
List<FlatDefaultsAddon> addonList = new ArrayList<>();
|
||||
for( FlatDefaultsAddon addon : addonLoader )
|
||||
addonList.add( addon );
|
||||
addonList.sort( (addon1, addon2) -> addon1.getPriority() - addon2.getPriority() );
|
||||
|
||||
// load properties from addons
|
||||
for( FlatDefaultsAddon addon : addonList ) {
|
||||
for( Class<?> lafClass : lafClasses ) {
|
||||
try( InputStream in = addon.getDefaults( lafClass ) ) {
|
||||
if( in != null )
|
||||
properties.load( in );
|
||||
}
|
||||
|
||||
ClassLoader addonClassLoader = addon.getClass().getClassLoader();
|
||||
if( !addonClassLoaders.contains( addonClassLoader ) )
|
||||
addonClassLoaders.add( addonClassLoader );
|
||||
}
|
||||
}
|
||||
|
||||
// collect addon class loaders
|
||||
List<ClassLoader> addonClassLoaders = new ArrayList<>();
|
||||
for( FlatDefaultsAddon addon : addonList ) {
|
||||
ClassLoader addonClassLoader = addon.getClass().getClassLoader();
|
||||
if( !addonClassLoaders.contains( addonClassLoader ) )
|
||||
addonClassLoaders.add( addonClassLoader );
|
||||
}
|
||||
|
||||
// collect all platform specific keys (but do not modify properties)
|
||||
ArrayList<String> platformSpecificKeys = new ArrayList<>();
|
||||
for( Object key : properties.keySet() ) {
|
||||
|
||||
@@ -46,6 +46,11 @@ public class FlatJideOssDefaultsAddon
|
||||
return super.getDefaults( lafClass );
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPriority() {
|
||||
return 11;
|
||||
}
|
||||
|
||||
//---- class FlatJideUIDefaultsCustomizer ---------------------------------
|
||||
|
||||
/**
|
||||
|
||||
@@ -29,4 +29,8 @@ import com.formdev.flatlaf.FlatDefaultsAddon;
|
||||
public class FlatSwingXDefaultsAddon
|
||||
extends FlatDefaultsAddon
|
||||
{
|
||||
@Override
|
||||
public int getPriority() {
|
||||
return 10;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user