From b4c1a97687f7dcb364e75bc4bb83fd3ea5b0e0f2 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Fri, 6 Dec 2019 11:13:50 +0100 Subject: [PATCH] IntelliJ Themes: - accept colors starting with two `#` as valid colors because IntelliJ IDEA does it too - fixed wrong error message when a color reference is missing (issue #26) --- .../java/com/formdev/flatlaf/IntelliJTheme.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java index d9612e89..52368c27 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java @@ -230,7 +230,9 @@ public class IntelliJTheme if( uiValue == null ) { // fix errors (missing '#' for colors) if( !valueStr.startsWith( "#" ) && (key.endsWith( "ground" ) || key.endsWith( "Color" )) ) - valueStr = "#" + valueStr; + valueStr = fixColorIfValid( "#" + valueStr, valueStr ); + else if( valueStr.startsWith( "##" ) ) + valueStr = fixColorIfValid( valueStr.substring( 1 ), valueStr ); else if( key.endsWith( ".border" ) || key.endsWith( "Border" ) ) { List parts = StringUtils.split( valueStr, ',' ); if( parts.size() == 5 && !parts.get( 4 ).startsWith( "#" ) ) { @@ -277,6 +279,17 @@ public class IntelliJTheme } } + private String fixColorIfValid( String newColorStr, String colorStr ) { + try { + // check whether it is valid + UIDefaultsLoader.parseColorRGBA( newColorStr ); + + return newColorStr; + } catch( IllegalArgumentException ex ) { + return colorStr; + } + } + private void applyColorPalette( UIDefaults defaults ) { if( icons == null ) return;