mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2026-02-10 22:17:13 -06:00
Theme Editor: use deferred properties loading
This commit is contained in:
@@ -154,8 +154,11 @@ class UIDefaultsLoader
|
||||
}
|
||||
}
|
||||
|
||||
Function<String, String> propertiesGetter = key -> {
|
||||
return properties.getProperty( key );
|
||||
};
|
||||
Function<String, String> resolver = value -> {
|
||||
return resolveValue( properties, value );
|
||||
return resolveValue( value, propertiesGetter );
|
||||
};
|
||||
|
||||
// get globals, which override all other defaults that end with same suffix
|
||||
@@ -165,7 +168,7 @@ class UIDefaultsLoader
|
||||
if( !key.startsWith( GLOBAL_PREFIX ) )
|
||||
continue;
|
||||
|
||||
String value = resolveValue( properties, (String) e.getValue() );
|
||||
String value = resolveValue( (String) e.getValue(), propertiesGetter );
|
||||
try {
|
||||
globals.put( key.substring( GLOBAL_PREFIX.length() ),
|
||||
parseValue( key, value, null, resolver, addonClassLoaders ) );
|
||||
@@ -191,7 +194,7 @@ class UIDefaultsLoader
|
||||
if( key.startsWith( VARIABLE_PREFIX ) || key.startsWith( GLOBAL_PREFIX ) )
|
||||
continue;
|
||||
|
||||
String value = resolveValue( properties, (String) e.getValue() );
|
||||
String value = resolveValue( (String) e.getValue(), propertiesGetter );
|
||||
try {
|
||||
defaults.put( key, parseValue( key, value, null, resolver, addonClassLoaders ) );
|
||||
} catch( RuntimeException ex ) {
|
||||
@@ -207,7 +210,7 @@ class UIDefaultsLoader
|
||||
FlatLaf.LOG.log( level, "FlatLaf: Failed to parse: '" + key + '=' + value + '\'', ex );
|
||||
}
|
||||
|
||||
static String resolveValue( Properties properties, String value ) {
|
||||
static String resolveValue( String value, Function<String, String> propertiesGetter ) {
|
||||
if( value.startsWith( PROPERTY_PREFIX ) )
|
||||
value = value.substring( PROPERTY_PREFIX.length() );
|
||||
else if( !value.startsWith( VARIABLE_PREFIX ) )
|
||||
@@ -219,7 +222,7 @@ class UIDefaultsLoader
|
||||
optional = true;
|
||||
}
|
||||
|
||||
String newValue = properties.getProperty( value );
|
||||
String newValue = propertiesGetter.apply( value );
|
||||
if( newValue == null ) {
|
||||
if( optional )
|
||||
return "null";
|
||||
@@ -227,7 +230,7 @@ class UIDefaultsLoader
|
||||
throw new IllegalArgumentException( "variable or property '" + value + "' not found" );
|
||||
}
|
||||
|
||||
return resolveValue( properties, newValue );
|
||||
return resolveValue( newValue, propertiesGetter );
|
||||
}
|
||||
|
||||
enum ValueType { UNKNOWN, STRING, BOOLEAN, CHARACTER, INTEGER, FLOAT, BORDER, ICON, INSETS, DIMENSION, COLOR,
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package com.formdev.flatlaf;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Properties;
|
||||
import java.util.function.Function;
|
||||
import com.formdev.flatlaf.UIDefaultsLoader.ValueType;
|
||||
|
||||
@@ -49,8 +48,8 @@ public class UIDefaultsLoaderAccessor
|
||||
public static Object NULL = ValueType.NULL;
|
||||
public static Object LAZY = ValueType.LAZY;
|
||||
|
||||
public static String resolveValue( Properties properties, String value ) {
|
||||
return UIDefaultsLoader.resolveValue( properties, value );
|
||||
public static String resolveValue( String value, Function<String, String> propertiesGetter ) {
|
||||
return UIDefaultsLoader.resolveValue( value, propertiesGetter );
|
||||
}
|
||||
|
||||
public static Object parseValue( String key, String value, Object[] resultValueType,
|
||||
|
||||
@@ -37,6 +37,7 @@ class FlatThemePropertiesSupport
|
||||
implements DocumentListener
|
||||
{
|
||||
private final FlatSyntaxTextArea textArea;
|
||||
private final Function<String, String> propertiesGetter;
|
||||
private final Function<String, String> resolver;
|
||||
private Properties propertiesCache;
|
||||
private final Map<Integer, Object> parsedValueCache = new HashMap<>();
|
||||
@@ -44,6 +45,9 @@ class FlatThemePropertiesSupport
|
||||
FlatThemePropertiesSupport( FlatSyntaxTextArea textArea ) {
|
||||
this.textArea = textArea;
|
||||
|
||||
propertiesGetter = key -> {
|
||||
return getProperties().getProperty( key );
|
||||
};
|
||||
resolver = v -> {
|
||||
return resolveValue( v );
|
||||
};
|
||||
@@ -52,7 +56,7 @@ class FlatThemePropertiesSupport
|
||||
}
|
||||
|
||||
private String resolveValue( String value ) {
|
||||
return UIDefaultsLoaderAccessor.resolveValue( getProperties(), value );
|
||||
return UIDefaultsLoaderAccessor.resolveValue( value, propertiesGetter );
|
||||
}
|
||||
|
||||
Object getParsedValueAtLine( int line ) {
|
||||
|
||||
Reference in New Issue
Block a user