From 05028d4035ccde84b84b67d40366bd21137d450c Mon Sep 17 00:00:00 2001 From: Scott Burns Date: Mon, 20 May 2019 19:50:40 +0200 Subject: [PATCH] Hiding and unhiding --- .../runelite/client/config/ConfigItem.java | 2 ++ .../client/plugins/config/ConfigPanel.java | 35 +++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/runelite-client/src/main/java/net/runelite/client/config/ConfigItem.java b/runelite-client/src/main/java/net/runelite/client/config/ConfigItem.java index 70131819fe..df7f1d318b 100644 --- a/runelite-client/src/main/java/net/runelite/client/config/ConfigItem.java +++ b/runelite-client/src/main/java/net/runelite/client/config/ConfigItem.java @@ -49,5 +49,7 @@ public @interface ConfigItem String group() default ""; + String unhide() default ""; + String parent() default ""; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java index 359f80e7f3..7410a085fa 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java @@ -505,6 +505,29 @@ public class ConfigPanel extends PluginPanel continue; // Ignore main 'parent' } + if (cid.getItem().hidden()) + { + boolean show = false; + String unhideat = cid.getItem().unhide(); + + for (ConfigItemDescriptor cid2 : cd.getItems()) + { + + if (cid2.getItem().keyName().equals(unhideat)) + { + if (cid2.getType() == boolean.class) + { + show = Boolean.parseBoolean(configManager.getConfiguration(cd.getGroup().value(), cid2.getItem().keyName())); + } + } + } + + if (!show) + { + continue; + } + } + JPanel item = new JPanel(); item.setLayout(new BorderLayout()); item.setMinimumSize(new Dimension(PANEL_WIDTH, 0)); @@ -821,6 +844,18 @@ public class ConfigPanel extends PluginPanel { JCheckBox checkbox = (JCheckBox) component; configManager.setConfiguration(cd.getGroup().value(), cid.getItem().keyName(), "" + checkbox.isSelected()); + + for (ConfigItemDescriptor cid2 : cd.getItems()) + { + if (cid2.getItem().hidden()) + { + if (cid2.getItem().unhide().equals(cid.getItem().keyName())) + { // If another options visibility changes depending on the value of this checkbox, then render the entire menu again + openGroupConfigPanel(listItem, config, cd); + return; + } + } + } } else if (component instanceof JSpinner) {