IDEA-100729 Allow make 2nd level configurables available for non-default project only

This commit is contained in:
Dmitry Avdeev
2013-02-08 18:13:59 +04:00
parent e8640944fe
commit 8e857ecfcc
3 changed files with 18 additions and 11 deletions
@@ -90,6 +90,8 @@ public class ConfigurableEP<T extends UnnamedConfigurable> extends AbstractExten
@Attribute("id")
public String id;
/** Marks project level configurables that do not apply to the default project. */
@Attribute("nonDefaultProject")
public boolean nonDefaultProject;
@@ -16,10 +16,13 @@
package com.intellij.openapi.options;
/**
* @deprecated Please use {@link ConfigurableEP#nonDefaultProject} instead.
*
* Marker interface that should be implemented by project level configurables that do not apply
* to the default project.
*
* @author yole
*/
@Deprecated
public interface NonDefaultProjectConfigurable {
}
@@ -42,10 +42,16 @@ public class ConfigurableExtensionPointUtil {
final Configurable[] components,
@Nullable ConfigurableFilter filter) {
final List<Configurable> result = new ArrayList<Configurable>();
ContainerUtil.addAll(result, components);
for (Configurable component : components) {
if (!isSuppressed(component, filter)) {
result.add(component);
}
}
final Map<String, ConfigurableWrapper> idToConfigurable = new HashMap<String, ConfigurableWrapper>();
for (ConfigurableEP<Configurable> ep : extensions) {
final Configurable configurable = ConfigurableWrapper.wrapConfigurable(ep);
if (isSuppressed(configurable, filter)) continue;
if (configurable instanceof ConfigurableWrapper) {
final ConfigurableWrapper wrapper = (ConfigurableWrapper)configurable;
idToConfigurable.put(wrapper.getId(), wrapper);
@@ -75,19 +81,15 @@ public class ConfigurableExtensionPointUtil {
}
ContainerUtil.addAll(result, idToConfigurable.values());
final ListIterator<Configurable> iterator = result.listIterator();
while (iterator.hasNext()) {
Configurable each = iterator.next();
if (each instanceof Configurable.Assistant
|| each instanceof OptionalConfigurable && !((OptionalConfigurable) each).needDisplay()
|| filter != null && !filter.isIncluded(each)) {
iterator.remove();
}
}
return result;
}
private static boolean isSuppressed(Configurable each, ConfigurableFilter filter) {
return each instanceof Configurable.Assistant
|| each instanceof OptionalConfigurable && !((OptionalConfigurable) each).needDisplay()
|| filter != null && !filter.isIncluded(each);
}
/*
private static void dumpConfigurable(ExtensionPointName<ConfigurableEP<Configurable>> configurablesExtensionPoint,
ConfigurableEP<Configurable> ep,