@Override public Configurable[] getConfigurables() { if (!isInitialized) { ArrayList<Configurable> list = new ArrayList<Configurable>(); if (super.myEp.dynamic) { Composite composite = cast(Composite.class, this); if (composite != null) { Collections.addAll(list, composite.getConfigurables()); } } if (super.myEp.children != null) { for (ConfigurableEP ep : super.myEp.getChildren()) { if (ep.isAvailable()) { list.add((Configurable) wrapConfigurable(ep)); } } } if (super.myEp.childrenEPName != null) { Object[] extensions = Extensions.getArea(super.myEp.getProject()) .getExtensionPoint(super.myEp.childrenEPName) .getExtensions(); if (extensions.length > 0) { if (extensions[0] instanceof ConfigurableEP) { for (Object object : extensions) { list.add((Configurable) wrapConfigurable((ConfigurableEP) object)); } } else if (!super.myEp.dynamic) { Composite composite = cast(Composite.class, this); if (composite != null) { Collections.addAll(list, composite.getConfigurables()); } } } } Collections.addAll(list, myKids); // sort configurables is needed for (Configurable configurable : list) { if (configurable instanceof Weighted) { if (((Weighted) configurable).getWeight() != 0) { myComparator = COMPARATOR; Collections.sort(list, myComparator); break; } } } myKids = ArrayUtil.toObjectArray(list, Configurable.class); isInitialized = true; } return myKids; }
private static <T extends UnnamedConfigurable> T createConfigurable( @NotNull ConfigurableEP<T> ep, boolean log) { long time = System.currentTimeMillis(); T configurable = ep.createConfigurable(); if (configurable instanceof Configurable) { ConfigurableCardPanel.warn((Configurable) configurable, "init", time); if (log) { LOG.debug("cannot create configurable wrapper for " + configurable.getClass()); } } return configurable; }
@Nullable public static <T extends UnnamedConfigurable> T wrapConfigurable(@NotNull ConfigurableEP<T> ep) { if (!ep.canCreateConfigurable()) { return null; } if (ep.displayName != null || ep.key != null || ep.parentId != null || ep.groupId != null) { return !ep.dynamic && ep.children == null && ep.childrenEPName == null ? (T) new ConfigurableWrapper(ep) : (T) new CompositeWrapper(ep); } return createConfigurable(ep, LOG.isDebugEnabled()); }
@Nls @Override public String getDisplayName() { if (myEp.displayName == null && myEp.key == null) { boolean loaded = myConfigurable != null; Configurable configurable = cast(Configurable.class, this); if (configurable != null) { String name = configurable.getDisplayName(); if (!loaded && LOG.isDebugEnabled()) { LOG.debug("XML does not provide displayName for " + configurable.getClass()); } return name; } } return myEp.getDisplayName(); }