use parentId to express child-parent relation

This commit is contained in:
Dmitry Avdeev
2012-09-21 15:08:16 +04:00
parent 0e24e2ac96
commit 8162f5ebdc
2 changed files with 31 additions and 4 deletions
@@ -53,7 +53,7 @@ public class ConfigurableEP<T extends UnnamedConfigurable> 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<T extends UnnamedConfigurable> 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<T extends UnnamedConfigurable> extends AbstractExten
return null;
}
@Override
public String toString() {
return getDisplayName();
}
private class InstanceFromProviderFactory extends AtomicNotNullLazyValue<ConfigurableProvider> implements NullableFactory<T> {
public T create() {
return (T)getValue().createConfigurable();
@@ -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;
}
}
}