From 8162f5ebdcd3c876ab907507a23b517e385bf4fa Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Fri, 21 Sep 2012 14:29:30 +0400 Subject: [PATCH] use parentId to express child-parent relation --- .../openapi/options/ConfigurableEP.java | 10 +++++++- .../options/ex/ConfigurableWrapper.java | 25 ++++++++++++++++--- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/platform/platform-api/src/com/intellij/openapi/options/ConfigurableEP.java b/platform/platform-api/src/com/intellij/openapi/options/ConfigurableEP.java index 57cbd6139027..ef565d4c6998 100644 --- a/platform/platform-api/src/com/intellij/openapi/options/ConfigurableEP.java +++ b/platform/platform-api/src/com/intellij/openapi/options/ConfigurableEP.java @@ -53,7 +53,7 @@ public class ConfigurableEP extends AbstractExten public String getDisplayName() { if (displayName != null) return displayName; - LOG.assertTrue(bundle != null, "Bundle missed for " + this); + LOG.assertTrue(bundle != null, "Bundle missed for " + instanceClass); final ResourceBundle resourceBundle = AbstractBundle.getResourceBundle(bundle, myPluginDescriptor.getPluginClassLoader()); return displayName = CommonBundle.message(resourceBundle, key); } @@ -68,6 +68,9 @@ public class ConfigurableEP extends AbstractExten @Attribute("childrenEPName") public String childrenEPName; + @Attribute("parentId") + public String parentId; + public ConfigurableEP[] getChildren() { for (ConfigurableEP child : children) { child.myPicoContainer = myPicoContainer; @@ -146,6 +149,11 @@ public class ConfigurableEP extends AbstractExten return null; } + @Override + public String toString() { + return getDisplayName(); + } + private class InstanceFromProviderFactory extends AtomicNotNullLazyValue implements NullableFactory { public T create() { return (T)getValue().createConfigurable(); 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 9f8c0e36dbfb..fe7d7297b1ff 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 @@ -134,6 +134,20 @@ public class ConfigurableWrapper implements SearchableConfigurable { return myEp.id == null ? myEp.instanceClass : myEp.id; } + + public String getParentId() { + return myEp.parentId; + } + + public ConfigurableWrapper addChild(Configurable configurable) { + return new CompositeWrapper(myEp, configurable); + } + + @Override + public String toString() { + return getDisplayName(); + } + @Nullable @Override public Runnable enableSearch(String option) { @@ -143,11 +157,10 @@ public class ConfigurableWrapper implements SearchableConfigurable { private static class CompositeWrapper extends ConfigurableWrapper implements Configurable.Composite { - private final Configurable[] myKids; + private Configurable[] myKids; - public CompositeWrapper(ConfigurableEP ep) { + public CompositeWrapper(ConfigurableEP ep, Configurable... kids) { super(ep); - Configurable[] kids; if (ep.children == null) { kids = EMPTY_ARRAY; } @@ -171,5 +184,11 @@ public class ConfigurableWrapper implements SearchableConfigurable { public Configurable[] getConfigurables() { return myKids; } + + @Override + public ConfigurableWrapper addChild(Configurable configurable) { + myKids = ArrayUtil.append(myKids, configurable); + return this; + } } }