mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-100729 Allow make 2nd level configurables available for non-default project only
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
+3
@@ -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 {
|
||||
}
|
||||
+13
-11
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user