summaryrefslogtreecommitdiff
path: root/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableWrapper.java
diff options
context:
space:
mode:
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.java20
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