From 3f16eec70cef0aa6fa14ba61505e55525ebed6b7 Mon Sep 17 00:00:00 2001 From: weisj <31143295+weisJ@users.noreply.github.com> Date: Thu, 27 May 2021 15:57:58 +0200 Subject: [PATCH] Fix theme properties not being displayed in the generated UITable. Improve sorting of values. --- .../darklaf/task/ThemeDefaultsInitTask.java | 4 +- .../java/documentation/CreateUITable.java | 65 +++++++++---------- .../github/weisj/darklaf/PropertyLoader.java | 5 -- .../github/weisj/darklaf/parser/Parser.java | 4 ++ 4 files changed, 38 insertions(+), 40 deletions(-) diff --git a/core/src/main/java/com/github/weisj/darklaf/task/ThemeDefaultsInitTask.java b/core/src/main/java/com/github/weisj/darklaf/task/ThemeDefaultsInitTask.java index 6cf87043e..e5834b018 100644 --- a/core/src/main/java/com/github/weisj/darklaf/task/ThemeDefaultsInitTask.java +++ b/core/src/main/java/com/github/weisj/darklaf/task/ThemeDefaultsInitTask.java @@ -94,9 +94,9 @@ private void loadThemeDefaults(final Theme currentTheme, final UIDefaults defaul private void backupAccentColors(final Properties uiProps) { uiProps.put(ACCENT_COLOR_BACKUP_KEY, Objects.requireNonNull( - uiProps.get(PropertyLoader.asKey(ACCENT_COLOR_SOURCE_KEY)), ACCENT_COLOR_SOURCE_KEY)); + uiProps.get(ACCENT_COLOR_SOURCE_KEY), ACCENT_COLOR_SOURCE_KEY)); uiProps.put(SELECTION_COLOR_BACKUP_KEY, Objects.requireNonNull( - uiProps.get(PropertyLoader.asKey(SELECTION_COLOR_SOURCE_KEY)), SELECTION_COLOR_SOURCE_KEY)); + uiProps.get(SELECTION_COLOR_SOURCE_KEY), SELECTION_COLOR_SOURCE_KEY)); } private void initAccentProperties(final Theme currentTheme, final Properties uiProps) { diff --git a/core/src/test/java/documentation/CreateUITable.java b/core/src/test/java/documentation/CreateUITable.java index 2705ce9fd..3570087be 100644 --- a/core/src/test/java/documentation/CreateUITable.java +++ b/core/src/test/java/documentation/CreateUITable.java @@ -30,7 +30,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import java.util.logging.Logger; import java.util.stream.Collectors; import javax.imageio.ImageIO; @@ -51,9 +50,9 @@ import com.github.weisj.darklaf.parser.PrimitiveParser; import com.github.weisj.darklaf.theme.Theme; import com.github.weisj.darklaf.util.ImageUtil; -import com.github.weisj.darklaf.util.LogUtil; import com.github.weisj.darklaf.util.StringUtil; import com.github.weisj.darklaf.util.SystemInfo; +import com.github.weisj.darklaf.util.Types; import com.kitfox.svg.LinearGradient; import com.kitfox.svg.SVGDiagram; import com.kitfox.svg.SVGElement; @@ -62,8 +61,6 @@ public class CreateUITable { - private static final Logger LOGGER = LogUtil.getLogger(CreateUITable.class); - private static final int SAMPLE_WIDTH = 150; private static final int SAMPLE_HEIGHT = 25; @@ -78,7 +75,6 @@ public class CreateUITable { public static void main(final String[] args) throws IOException { for (Theme theme : LafManager.getRegisteredThemes()) { - LOGGER.info("Creating defaults table for " + theme.getDisplayName()); createThemeDefaultsPage(theme); } } @@ -103,16 +99,21 @@ public static void createThemeDefaultsPage(final Theme theme) throws IOException } } + private String getGroup(final Map.Entry entry) { + Parser.DebugParseResult value = Types.safeCast(entry.getValue(), Parser.DebugParseResult.class); + String s = value != null ? value.originalKey : entry.getKey().toString(); + if (s.startsWith(THEME_GROUP)) return THEME_GROUP; + if (s.contains(".")) return s.split("\\.")[0]; + if (s.endsWith("UI")) return s.substring(0, s.length() - 2); + return MISC_GROUP + s; + } + private String createTables(final Theme theme, final int ident) { UIDefaults defaults = setupThemeDefaults(theme); - Set groups = defaults.keySet().stream().map(key -> { - String s = key.toString(); - if (s.startsWith(THEME_GROUP)) return THEME_GROUP; - if (s.contains(".")) return s.split("\\.")[0]; - if (s.endsWith("UI")) return s.substring(0, s.length() - 2); - return MISC_GROUP + s; - }).collect(Collectors.toSet()); + Set groups = defaults.entrySet().stream() + .map(this::getGroup) + .collect(Collectors.toSet()); Set miscKeys = groups.stream() .filter(s -> s.startsWith(MISC_GROUP)) @@ -148,18 +149,20 @@ public Theme getTheme() { private void appendGroup(final int ident, final UIDefaults defaults, final StringBuilder builder, final String group, final String heading) { builder.append(StringUtil.repeat(IDENT, ident)).append("

").append(heading).append("

\n"); - Set> values = defaults.entrySet().stream().filter(entry -> { - String key = entry.getKey().toString(); - if (key.startsWith("%")) return true; - if (key.endsWith("UI")) return key.substring(0, key.length() - 2).equals(group); - if (key.contains(".")) return key.split("\\.")[0].equals(group); - return key.equals(group); - }).collect(Collectors.toSet()); + Set> values = defaults.entrySet().stream() + .filter(entry -> getGroup(entry).equals(group)).collect(Collectors.toSet()); appendTable(builder, values, ident); values.forEach(entry -> defaults.remove(entry.getKey())); builder.append('\n'); } + private Object unwrap(final Object o) { + if (o instanceof ParseResult) { + return ((ParseResult) o).result; + } + return o; + } + private void appendTable(final StringBuilder builder, final Set> values, final int ident) { builder.append(StringUtil.repeat(IDENT, ident)).append("\n"); @@ -172,16 +175,11 @@ private void appendTable(final StringBuilder builder, final Set entry.getKey().toString().endsWith("UI")) .forEach(entry -> appendRow(builder, entry, ident + 1)); values.stream().filter(entry -> !entry.getKey().toString().endsWith("UI")).sorted((o1, o2) -> { - int res = o1.getValue().getClass().getSimpleName().compareTo(o2.getValue().getClass().getSimpleName()); + Object v1 = unwrap(o1.getValue()); + Object v2 = unwrap(o2.getValue()); + int res = v1.getClass().getSimpleName().compareTo(v2.getClass().getSimpleName()); if (res != 0) return res; - Object val1 = o1.getValue(); - Object val2 = o2.getValue(); - if (val1 instanceof Comparable) { - // noinspection unchecked - return ((Comparable) val1).compareTo(val2); - } else { - return val1.toString().compareTo(val2.toString()); - } + return o1.getKey().toString().compareTo(o2.getKey().toString()); }).forEach(entry -> appendRow(builder, entry, ident + 1)); builder.append(StringUtil.repeat(IDENT, ident)).append("
\n"); } @@ -207,9 +205,7 @@ private void appendRow(final StringBuilder builder, final Map.Entry\n"; } return StringUtil.repeat(IDENT, ident) + String - .format("\"%s\"\n", path, key); + .format("\"%s\"\n", path, key); } private String createImage(final Object value, final String name, final Dimension size) throws IOException { @@ -314,7 +310,10 @@ private String parseSVGIcon(final DarkSVGIcon value, final int ident) { String id = ((LinearGradient) child).getId(); String match = "=\"url\\(#" + id + "\\)\""; String fillReplacement = "fill=\"#" + ColorUtil.toHex(color) + "\""; - if (opacity != 1) fillReplacement += " fill-opacity=\"" + opacity + "\""; + if (opacity != 1) { + fillReplacement += " fill-opacity=\"" + opacity + "\""; + svg = svg.replaceAll("fill-opacity=\"[^\"]*\"", ""); + } svg = svg.replaceAll("fill" + match, fillReplacement); String strokeReplacement = "stroke=\"#" + ColorUtil.toHex(color) + "\""; diff --git a/property-loader/src/main/java/com/github/weisj/darklaf/PropertyLoader.java b/property-loader/src/main/java/com/github/weisj/darklaf/PropertyLoader.java index 046d24aa8..cb38773fa 100644 --- a/property-loader/src/main/java/com/github/weisj/darklaf/PropertyLoader.java +++ b/property-loader/src/main/java/com/github/weisj/darklaf/PropertyLoader.java @@ -125,9 +125,4 @@ public static void replacePropertyEntriesOfType(final Class type, final M public static String getReferencePrefix() { return String.valueOf(REFERENCE_PREFIX); } - - public static String asKey(final String key) { - // if (Parser.isDebugMode()) return getReferencePrefix() + key; - return key; - } } diff --git a/property-loader/src/main/java/com/github/weisj/darklaf/parser/Parser.java b/property-loader/src/main/java/com/github/weisj/darklaf/parser/Parser.java index 895220b68..1fff68a87 100644 --- a/property-loader/src/main/java/com/github/weisj/darklaf/parser/Parser.java +++ b/property-loader/src/main/java/com/github/weisj/darklaf/parser/Parser.java @@ -79,10 +79,14 @@ public static ParseResult createParseResult(final String key, final String value public static class DebugParseResult extends ParseResult { + public String originalKey; + public String originalValue; public String referenceKey; public DebugParseResult(final String key, final String value) { super(key, value); + this.originalKey = key; + this.originalValue = value; } } }