diff options
Diffstat (limited to 'platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableWrapper.java')
-rw-r--r-- | platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableWrapper.java | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableWrapper.java b/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableWrapper.java index 3b67a3478368..dd8169e159a7 100644 --- a/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableWrapper.java +++ b/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableWrapper.java @@ -47,6 +47,9 @@ public class ConfigurableWrapper implements SearchableConfigurable { @Nullable public static <T extends UnnamedConfigurable> T wrapConfigurable(ConfigurableEP<T> ep) { + if (!ep.canCreateConfigurable()) { + return null; + } if (ep.displayName != null || ep.key != null || ep.groupId != null) { T configurable = null; if (ep.providerClass != null) { @@ -55,9 +58,9 @@ public class ConfigurableWrapper implements SearchableConfigurable { return null; // it is allowed to return null from provider } } - return ep.children != null || ep.childrenEPName != null || ep.dynamic - ? (T)new CompositeWrapper(ep, configurable) - : (T)new ConfigurableWrapper(ep, configurable); + return !ep.dynamic && ep.children == null && ep.childrenEPName == null + ? (T)new ConfigurableWrapper(ep, configurable) + : (T)new CompositeWrapper(ep, configurable); } else { return ep.createConfigurable(); @@ -157,7 +160,16 @@ public class ConfigurableWrapper implements SearchableConfigurable { @NotNull @Override public String getId() { - return myEp.id == null ? myEp.instanceClass == null ? myEp.providerClass : myEp.instanceClass : myEp.id; + if (myEp.id != null) { + return myEp.id; + } + UnnamedConfigurable configurable = getConfigurable(); + if (configurable instanceof SearchableConfigurable) { + return ((SearchableConfigurable)configurable).getId(); + } + return myEp.instanceClass != null + ? myEp.instanceClass + : myEp.providerClass; } @NotNull |