From: Sergey Malenkov Date: Tue, 19 Aug 2014 14:52:42 +0000 (+0400) Subject: Fix ConfigurableGroup selection in the new Settings tree. X-Git-Tag: webstorm/138.1711~4^2 X-Git-Url: https://git.jetbrains.org/?p=idea%2Fcommunity.git;a=commitdiff_plain;h=b19a138c9dff3cf5a05a90cccfff59af81a25d49 Fix ConfigurableGroup selection in the new Settings tree. --- diff --git a/platform/platform-impl/src/com/intellij/openapi/options/ex/MixedConfigurableGroup.java b/platform/platform-impl/src/com/intellij/openapi/options/ex/MixedConfigurableGroup.java index f1411cf3551d..32be2a88aac3 100644 --- a/platform/platform-impl/src/com/intellij/openapi/options/ex/MixedConfigurableGroup.java +++ b/platform/platform-impl/src/com/intellij/openapi/options/ex/MixedConfigurableGroup.java @@ -17,6 +17,7 @@ package com.intellij.openapi.options.ex; import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurableGroup; +import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.OptionsBundle; import com.intellij.openapi.options.SearchableConfigurable; @@ -24,8 +25,9 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map.Entry; +import javax.swing.JComponent; -public final class MixedConfigurableGroup implements ConfigurableGroup { +public final class MixedConfigurableGroup implements Configurable, ConfigurableGroup { private final String myGroupId; private Configurable[] myConfigurables; @@ -40,6 +42,34 @@ public final class MixedConfigurableGroup implements ConfigurableGroup { this(groupId, configurables.remove(groupId)); } + @Override + public JComponent createComponent() { + return null; + } + + @Override + public boolean isModified() { + return false; + } + + @Override + public void apply() throws ConfigurationException { + } + + @Override + public void reset() { + } + + @Override + public void disposeUIResources() { + myConfigurables = null; + } + + @Override + public String getHelpTopic() { + return "configurable.group." + myGroupId + ".help.topic"; + } + @Override public String getDisplayName() { return OptionsBundle.message("configurable.group." + myGroupId + ".settings.display.name"); diff --git a/platform/platform-impl/src/com/intellij/openapi/options/newEditor/SettingsTreeView.java b/platform/platform-impl/src/com/intellij/openapi/options/newEditor/SettingsTreeView.java index 9269da7ab967..31c4272c7a47 100644 --- a/platform/platform-impl/src/com/intellij/openapi/options/newEditor/SettingsTreeView.java +++ b/platform/platform-impl/src/com/intellij/openapi/options/newEditor/SettingsTreeView.java @@ -435,20 +435,21 @@ final class SettingsTreeView extends JComponent implements Disposable, OptionsEd myConfigurable = configurable; String name = configurable.getDisplayName(); myDisplayName = name != null ? name.replace("\n", " ") : "{ " + configurable.getClass().getSimpleName() + " }"; - - myConfigurableToNodeMap.put(configurable, this); } private MyNode(CachingSimpleNode parent, ConfigurableGroup group) { super(parent); myComposite = group; - myConfigurable = null; + myConfigurable = group instanceof Configurable ? (Configurable)group : null; String name = group.getDisplayName(); myDisplayName = name != null ? name.replace("\n", " ") : "{ " + group.getClass().getSimpleName() + " }"; } @Override protected SimpleNode[] buildChildren() { + if (myConfigurable != null) { + myConfigurableToNodeMap.put(myConfigurable, this); + } if (myComposite == null) { return NO_CHILDREN; }