mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Settings: allow to make a group from any configurable.
This commit is contained in:
+16
-3
@@ -55,9 +55,11 @@ public class ConfigurableWrapper implements SearchableConfigurable {
|
||||
return null; // it is allowed to return null from provider
|
||||
}
|
||||
}
|
||||
return ep.children != null || ep.childrenEPName != null || ep.dynamic
|
||||
? (T)new CompositeWrapper(ep, configurable)
|
||||
: (T)new ConfigurableWrapper(ep, configurable);
|
||||
return !ep.dynamic && ep.children == null && ep.childrenEPName == null
|
||||
? (T)new ConfigurableWrapper(ep, configurable)
|
||||
: "itself".equals(ep.groupId)
|
||||
? (T)new GroupWrapper(ep, configurable)
|
||||
: (T)new CompositeWrapper(ep, configurable);
|
||||
}
|
||||
else {
|
||||
return ep.createConfigurable();
|
||||
@@ -231,4 +233,15 @@ public class ConfigurableWrapper implements SearchableConfigurable {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
private static final class GroupWrapper extends CompositeWrapper implements ConfigurableGroup {
|
||||
private GroupWrapper(@NotNull ConfigurableEP ep, @Nullable UnnamedConfigurable configurable, Configurable... kids) {
|
||||
super(ep, configurable, kids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortName() {
|
||||
return getDisplayName();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+15
-10
@@ -102,17 +102,23 @@ public final class MixedConfigurableGroup implements SearchableConfigurable, Con
|
||||
}
|
||||
|
||||
public static ConfigurableGroup[] getGroups(Configurable... configurables) {
|
||||
ArrayList<ConfigurableGroup> groups = new ArrayList<ConfigurableGroup>();
|
||||
HashMap<String, ArrayList<Configurable>> map = new HashMap<String, ArrayList<Configurable>>();
|
||||
for (Configurable configurable : configurables) {
|
||||
String groupId = null;
|
||||
if (configurable instanceof ConfigurableWrapper) {
|
||||
groupId = ((ConfigurableWrapper)configurable).getExtensionPoint().groupId;
|
||||
if (configurable instanceof ConfigurableGroup) {
|
||||
groups.add((ConfigurableGroup)configurable);
|
||||
}
|
||||
ArrayList<Configurable> list = map.get(groupId);
|
||||
if (list == null) {
|
||||
map.put(groupId, list = new ArrayList<Configurable>());
|
||||
else {
|
||||
String groupId = null;
|
||||
if (configurable instanceof ConfigurableWrapper) {
|
||||
groupId = ((ConfigurableWrapper)configurable).getExtensionPoint().groupId;
|
||||
}
|
||||
ArrayList<Configurable> list = map.get(groupId);
|
||||
if (list == null) {
|
||||
map.put(groupId, list = new ArrayList<Configurable>());
|
||||
}
|
||||
list.add(configurable);
|
||||
}
|
||||
list.add(configurable);
|
||||
}
|
||||
ArrayList<Configurable> buildList = map.get("build");
|
||||
if (buildList != null) {
|
||||
@@ -124,9 +130,8 @@ public final class MixedConfigurableGroup implements SearchableConfigurable, Con
|
||||
buildList.add(0, buildTools);
|
||||
}
|
||||
}
|
||||
ArrayList<ConfigurableGroup> groups = new ArrayList<ConfigurableGroup>(map.size());
|
||||
groups.add(new MixedConfigurableGroup("appearance", map));
|
||||
groups.add(new MixedConfigurableGroup("editor", map));
|
||||
groups.add(0, new MixedConfigurableGroup("appearance", map));
|
||||
groups.add(1, new MixedConfigurableGroup("editor", map));
|
||||
groups.add(new MixedConfigurableGroup("project", map));
|
||||
groups.add(new MixedConfigurableGroup("build", map));
|
||||
groups.add(new MixedConfigurableGroup("language", map));
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
<selectInTarget implementation="com.intellij.openapi.vcs.changes.SelectInChangesViewTarget"/>
|
||||
|
||||
<projectConfigurable groupId="project" groupWeight="110" dynamic="true" key="version.control.main.configurable.name" bundle="messages.VcsBundle" instance="com.intellij.openapi.vcs.configurable.VcsManagerConfigurable" id="vcs"/>
|
||||
<projectConfigurable groupId="itself" groupWeight="110" dynamic="true" key="version.control.main.configurable.name" bundle="messages.VcsBundle" instance="com.intellij.openapi.vcs.configurable.VcsManagerConfigurable" id="vcs"/>
|
||||
|
||||
<changesViewContent tabName="Repository" className="com.intellij.openapi.vcs.changes.committed.CommittedChangesViewManager"
|
||||
predicateClassName="com.intellij.openapi.vcs.changes.committed.CommittedChangesVisibilityPredicate"/>
|
||||
|
||||
Reference in New Issue
Block a user