mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Ignore invisible SearchableConfigurable.Parent (0xDBE)
This commit is contained in:
+37
-1
@@ -196,7 +196,7 @@ public class ConfigurableWrapper implements SearchableConfigurable {
|
||||
return configurable instanceof SearchableConfigurable ? ((SearchableConfigurable)configurable).enableSearch(option) : null;
|
||||
}
|
||||
|
||||
private static class CompositeWrapper extends ConfigurableWrapper implements Configurable.Composite {
|
||||
private static class CompositeWrapper extends ConfigurableWrapper implements SearchableConfigurable.Parent {
|
||||
|
||||
private Configurable[] myKids;
|
||||
|
||||
@@ -241,6 +241,42 @@ public class ConfigurableWrapper implements SearchableConfigurable {
|
||||
myKids = ArrayUtil.append(myKids, configurable);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasOwnContent() {
|
||||
UnnamedConfigurable configurable = getConfigurable();
|
||||
if (configurable instanceof SearchableConfigurable.Parent) {
|
||||
SearchableConfigurable.Parent parent = (SearchableConfigurable.Parent)configurable;
|
||||
return parent.hasOwnContent();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVisible() {
|
||||
if (super.myConfigurable == null) {
|
||||
String name = super.myEp.instanceClass;
|
||||
if (name == null) {
|
||||
name = super.myEp.implementationClass;
|
||||
}
|
||||
if (name != null) {
|
||||
try {
|
||||
if (!SearchableConfigurable.Parent.class.isAssignableFrom(super.myEp.findClass(name))) {
|
||||
return true; // do not instantiate wrapped configurable if not needed
|
||||
}
|
||||
}
|
||||
catch (ClassNotFoundException exception) {
|
||||
return true; // ignore unexpected exception from findClass
|
||||
}
|
||||
}
|
||||
}
|
||||
UnnamedConfigurable configurable = getConfigurable();
|
||||
if (configurable instanceof SearchableConfigurable.Parent) {
|
||||
SearchableConfigurable.Parent parent = (SearchableConfigurable.Parent)configurable;
|
||||
return parent.isVisible();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
private static final class GroupWrapper extends CompositeWrapper implements ConfigurableGroup {
|
||||
|
||||
@@ -97,6 +97,12 @@ public final class MixedConfigurableGroup implements SearchableConfigurable, Con
|
||||
ArrayList<ConfigurableGroup> groups = new ArrayList<ConfigurableGroup>();
|
||||
HashMap<String, ArrayList<Configurable>> map = new HashMap<String, ArrayList<Configurable>>();
|
||||
for (Configurable configurable : configurables) {
|
||||
if (configurable instanceof SearchableConfigurable.Parent) {
|
||||
SearchableConfigurable.Parent parent = (SearchableConfigurable.Parent)configurable;
|
||||
if (!parent.isVisible()) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (configurable instanceof ConfigurableGroup) {
|
||||
groups.add((ConfigurableGroup)configurable);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user