IDEA-229555 Group bundled plugins in Settings | Plugins by category

GitOrigin-RevId: 51b5b8476879e9005983c3a795f59acf52392cb9
This commit is contained in:
Alexander Lobas
2020-01-28 12:36:54 +00:00
committed by intellij-monorepo-bot
parent 0b10022107
commit e7a12bd7e3
40 changed files with 71 additions and 66 deletions
@@ -34,7 +34,6 @@ import com.intellij.openapi.updateSettings.impl.UpdateSettings;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.ThrowableNotNullFunction;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.ui.*;
import com.intellij.ui.components.JBScrollPane;
@@ -787,35 +786,24 @@ public class PluginManagerConfigurable
PluginsGroup downloaded = new PluginsGroup(IdeBundle.message("plugins.configurable.downloaded"));
downloaded.descriptors.addAll(InstalledPluginsState.getInstance().getInstalledPlugins());
boolean groupBundled = Registry.is("plugins.group.bundled.category", false);
Map<String, List<IdeaPluginDescriptor>> bundledGroups = new HashMap<>();
PluginsGroup bundled = new PluginsGroup(IdeBundle.message("plugins.configurable.bundled"));
ApplicationInfoEx appInfo = ApplicationInfoEx.getInstanceEx();
int bundledEnabled = 0;
int downloadedEnabled = 0;
boolean hideImplDetails = PluginManagerCore.hideImplementationDetails();
String otherCategoryTitle = IdeBundle.message("plugins.configurable.other.bundled");
for (IdeaPluginDescriptor descriptor : PluginManagerCore.getPlugins()) {
if (!appInfo.isEssentialPlugin(descriptor.getPluginId())) {
if (descriptor.isBundled()) {
if (hideImplDetails && descriptor.isImplementationDetail()) {
continue;
}
bundled.descriptors.add(descriptor);
if (groupBundled) {
String category = StringUtil.defaultIfEmpty(descriptor.getCategory(), otherCategoryTitle);
List<IdeaPluginDescriptor> groupDescriptors = bundledGroups.get(category);
if (groupDescriptors == null) {
bundledGroups.put(category, groupDescriptors = new ArrayList<>());
}
groupDescriptors.add(descriptor);
}
if (descriptor.isEnabled()) {
bundledEnabled++;
String category = StringUtil.defaultIfEmpty(descriptor.getCategory(), otherCategoryTitle);
List<IdeaPluginDescriptor> groupDescriptors = bundledGroups.get(category);
if (groupDescriptors == null) {
bundledGroups.put(category, groupDescriptors = new ArrayList<>());
}
groupDescriptors.add(descriptor);
}
else {
downloaded.descriptors.add(descriptor);
@@ -851,43 +839,35 @@ public class PluginManagerConfigurable
myPluginModel.setDownloadedGroup(myInstalledPanel, downloaded, installing);
if (groupBundled) {
List<PluginsGroup> groups = new ArrayList<>();
List<PluginsGroup> groups = new ArrayList<>();
for (Entry<String, List<IdeaPluginDescriptor>> entry : bundledGroups.entrySet()) {
PluginsGroup group = new PluginsGroup(entry.getKey()) {
@Override
public void titleWithCount(int enabled) {
rightAction.setText(enabled == 0 ? IdeBundle.message("plugins.configurable.enable.all")
: IdeBundle.message("plugins.configurable.disable.all"));
}
};
group.descriptors.addAll(entry.getValue());
group.sortByName();
group.rightAction = new LinkLabel<>("", null, (__, ___) -> myPluginModel
.changeEnableDisable(ContainerUtil.toArray(group.descriptors, IdeaPluginDescriptor[]::new),
group.rightAction.getText().startsWith("Enable")));
group.titleWithEnabled(myPluginModel);
groups.add(group);
}
ContainerUtil.sort(groups, (o1, o2) -> StringUtil.compare(o1.title, o2.title, true));
PluginsGroup otherGroup = ContainerUtil.find(groups, group -> group.title.equals(otherCategoryTitle));
if (otherGroup != null) {
groups.remove(otherGroup);
groups.add(otherGroup);
}
for (PluginsGroup group : groups) {
myInstalledPanel.addGroup(group);
myPluginModel.addEnabledGroup(group);
}
for (Entry<String, List<IdeaPluginDescriptor>> entry : bundledGroups.entrySet()) {
PluginsGroup group = new PluginsGroup(entry.getKey()) {
@Override
public void titleWithCount(int enabled) {
rightAction.setText(enabled == 0 ? IdeBundle.message("plugins.configurable.enable.all")
: IdeBundle.message("plugins.configurable.disable.all"));
}
};
group.descriptors.addAll(entry.getValue());
group.sortByName();
group.rightAction = new LinkLabel<>("", null, (__, ___) -> myPluginModel
.changeEnableDisable(ContainerUtil.toArray(group.descriptors, IdeaPluginDescriptor[]::new),
group.rightAction.getText().startsWith("Enable")));
group.titleWithEnabled(myPluginModel);
groups.add(group);
}
else {
bundled.sortByName();
bundled.titleWithCount(bundledEnabled);
myInstalledPanel.addGroup(bundled);
myPluginModel.addEnabledGroup(bundled);
ContainerUtil.sort(groups, (o1, o2) -> StringUtil.compare(o1.title, o2.title, true));
PluginsGroup otherGroup = ContainerUtil.find(groups, group -> group.title.equals(otherCategoryTitle));
if (otherGroup != null) {
groups.remove(otherGroup);
groups.add(otherGroup);
}
for (PluginsGroup group : groups) {
myInstalledPanel.addGroup(group);
myPluginModel.addEnabledGroup(group);
}
myPluginUpdatesService.connectInstalled(updates -> {
@@ -1767,8 +1767,7 @@ plugins.configurable.disable.all=Disable All
plugins.configurable.enable.all=Enable All
plugins.configurable.show=Show
plugins.configurable.search.options=Search Options
plugins.configurable.other.bundled=Other Bundled
plugins.configurable.bundled=Bundled
plugins.configurable.other.bundled=Other Tools
plugins.configurable.downloaded=Downloaded
plugins.configurable.installing=Installing
plugins.configurable.sort.by=Sort By
@@ -1778,9 +1778,6 @@ clipboard.history.max.memory.description=Amount of memory (approximate, order-of
plugins.show.implementation.details=false
plugins.show.implementation.details.description=Show plugins which are marked as implementation-detail
plugins.group.bundled.category=false
plugins.group.bundled.category.description=Show bundled plugins in separated category group
new.project.load.remote.templates=false
new.project.load.remote.templates.description=Show templates loaded from jetbrains.com in new project dialog
@@ -1,6 +1,7 @@
<idea-plugin>
<name>Bytecode Viewer</name>
<id>ByteCodeViewer</id>
<category>Other Tools</category>
<description>
<![CDATA[Shows the bytecode of a compiled Java class file.<p>
@@ -1,6 +1,7 @@
<idea-plugin>
<name>IntelliLang</name>
<id>org.intellij.intelliLang</id>
<category>Other Tools</category>
<vendor>JetBrains</vendor>
<description>
<![CDATA[
@@ -1,6 +1,7 @@
<idea-plugin>
<name>Ant</name>
<id>AntSupport</id>
<category>Build Tools</category>
<description><![CDATA[
Provides integration with the <a href="http://ant.apache.org/">Ant</a> build tool.
<ul><li>Dedicated tool window</li>
@@ -2,7 +2,7 @@
<id>com.jetbrains.changeReminder</id>
<name>ChangeReminder</name>
<vendor>JetBrains</vendor>
<category>Version Controls</category>
<description><![CDATA[Predicts files that you may have forgotten to modify based on the commit history.
<ul><li>Supports Git</li>
@@ -1,5 +1,6 @@
<idea-plugin>
<name>Copyright</name>
<category>Other Tools</category>
<id>com.intellij.copyright</id>
<description><![CDATA[
Ensures that files in a project or module have a consistent copyright notice.
+1
View File
@@ -1,6 +1,7 @@
<idea-plugin>
<name>Code Coverage for Java</name>
<id>Coverage</id>
<category>Code Coverage</category>
<depends optional="true" config-file="testng-integration.xml">TestNG-J</depends>
<depends optional="true" config-file="junit-integration.xml">JUnit</depends>
<depends>com.intellij.modules.coverage</depends>
@@ -9,7 +9,7 @@
<a href="http://www.jetbrains.org/intellij/sdk/docs/">IntelliJ Platform SDK Docs</a>
]]></description>
<category>inspection</category>
<category>Plugin Development</category>
<vendor>JetBrains</vendor>
<depends>com.intellij.properties</depends>
@@ -1,6 +1,7 @@
<idea-plugin>
<name>Eclipse Interoperability</name>
<id>org.jetbrains.idea.eclipse</id>
<category>Other Tools</category>
<description>
<![CDATA[
Enables interoperability with Eclipse and provides the following features:
@@ -2,6 +2,7 @@
<idea-plugin>
<id>org.editorconfig.editorconfigjetbrains</id>
<name>EditorConfig</name>
<category>Other Tools</category>
<vendor>JetBrains</vendor>
<description><![CDATA[
@@ -12,7 +12,7 @@
<p>To configure, open <b>Settings / Preferences</b> and go to <b>Version Control | Git</b>.</p>
]]>
</description>
<category>VCS Integration</category>
<category>Version Controls</category>
<vendor>JetBrains</vendor>
<resource-bundle>messages.GitBundle</resource-bundle>
@@ -2,6 +2,7 @@
<name>GitHub</name>
<id>org.jetbrains.plugins.github</id>
<vendor>JetBrains</vendor>
<category>Version Controls</category>
<description>
<![CDATA[
Provides integration with <a href="http://github.com/">GitHub</a>.
@@ -1,6 +1,7 @@
<idea-plugin implementation-detail="true">
<name>Gradle-Maven</name>
<id>org.jetbrains.plugins.gradle.maven</id>
<category>Build Tools</category>
<vendor>JetBrains</vendor>
<depends>org.intellij.groovy</depends>
@@ -1,6 +1,7 @@
<idea-plugin url="https://www.jetbrains.com/help/idea/gradle.html">
<name>Gradle</name>
<id>com.intellij.gradle</id>
<category>Build Tools</category>
<vendor>JetBrains</vendor>
<description>
<![CDATA[
+1
View File
@@ -1,6 +1,7 @@
<idea-plugin xmlns:xi="http://www.w3.org/2001/XInclude">
<id>org.intellij.groovy</id>
<name>Groovy</name>
<category>Languages</category>
<description><![CDATA[
Adds support for the <a href="https://groovy-lang.org/">Groovy</b> language.
<ul>
+1 -1
View File
@@ -12,7 +12,7 @@
</ul>
]]>
</description>
<category>VCS Integration</category>
<category>Version Controls</category>
<vendor>JetBrains</vendor>
<depends>com.intellij.modules.vcs</depends>
@@ -2,6 +2,7 @@
<id>org.jetbrains.java.decompiler</id>
<name>Java Bytecode Decompiler</name>
<category>Other Tools</category>
<description>
Extends standard .class file viewer with the Fernflower Java decompiler
</description>
@@ -1,6 +1,7 @@
<idea-plugin>
<id>com.intellij.java-i18n</id>
<name>Java Internationalization</name>
<category>Other Tools</category>
<depends>com.intellij.properties</depends>
<depends>com.intellij.modules.java</depends>
<depends>com.intellij.modules.platform</depends>
@@ -2,6 +2,7 @@
<name>JavaFX</name>
<id>org.jetbrains.plugins.javaFX</id>
<vendor>JetBrains</vendor>
<category>JVM Frameworks</category>
<description>
<![CDATA[
Enables <a href="http://www.oracle.com/technetwork/java/javafx/overview/index.html">JavaFX</a> support.
+1
View File
@@ -28,6 +28,7 @@
</ul>
]]>
</description>
<category>Test Tools</category>
<depends>com.intellij.modules.java</depends>
<vendor>JetBrains</vendor>
<extensions defaultExtensionNs="com.intellij">
@@ -2,6 +2,7 @@
<id>com.intellij.laf.macos</id>
<name>macOS Light Theme</name>
<vendor>JetBrains</vendor>
<category>Themes</category>
<description><![CDATA[Provides macOS Look And Feel that mimics macOS native Blue and Graphite themes]]></description>
@@ -2,6 +2,7 @@
<id>com.intellij.laf.win10</id>
<name>Windows 10 Light Theme</name>
<vendor>JetBrains</vendor>
<category>Themes</category>
<description><![CDATA[Provides Windows 10 Look And Feel that mimics Windows 10 system UI]]></description>
@@ -2,7 +2,7 @@
<id>org.intellij.plugins.markdown</id>
<name>Markdown</name>
<vendor>JetBrains</vendor>
<category>Languages</category>
<resource-bundle>messages.MarkdownBundle</resource-bundle>
<depends>com.intellij.modules.lang</depends>
<depends optional="true" config-file="plugin-intelliLang.xml">org.intellij.intelliLang</depends>
@@ -1,7 +1,7 @@
<idea-plugin>
<id>org.jetbrains.idea.maven</id>
<name>Maven</name>
<category>Build Tools</category>
<description>
<![CDATA[
Provides <a href="http://maven.apache.org/">Maven</a> support.
@@ -1,6 +1,7 @@
<idea-plugin>
<id>com.intellij.properties</id>
<name>Properties</name>
<category>Other Tools</category>
<depends>com.intellij.modules.xml</depends>
<description>
Enables smart editing of .properties files.
@@ -1,6 +1,7 @@
<idea-plugin>
<name>Settings Repository</name>
<id>org.jetbrains.settingsRepository</id>
<category>IDE Settings</category>
<description><![CDATA[
<p>Supports sharing settings between installations of IntelliJ Platform based products used by the same developer (or team) on different computers.</p>
<p>Synchronization is performed automatically after successful completion of "Update Project" or "Push" actions. Also you can do sync using VCS -> Sync Settings.</p>
+1
View File
@@ -4,6 +4,7 @@
<depends>com.intellij.modules.lang</depends>
<depends optional="true" config-file="sh-terminal.xml">org.jetbrains.plugins.terminal</depends>
<name>Shell Script</name>
<category>Languages</category>
<resource-bundle>messages.ShBundle</resource-bundle>
<description><![CDATA[
Adds support for working with shell script files
@@ -2,6 +2,7 @@
<id>com.intellij.stats.completion</id>
<name>Machine Learning Code Completion</name>
<vendor>JetBrains</vendor>
<category>Other Tools</category>
<description><![CDATA[
<p>The plugin improves code completion feature by reordering of elements in the completion
@@ -2,7 +2,7 @@
<id>org.jetbrains.debugger.streams</id>
<name>Java Stream Debugger</name>
<vendor>JetBrains</vendor>
<category>Other Tools</category>
<depends>com.intellij.java</depends>
<description><![CDATA[
+1 -1
View File
@@ -1,7 +1,7 @@
<idea-plugin>
<name>Subversion</name>
<id>Subversion</id>
<category>VCS Integration</category>
<category>Version Controls</category>
<description>
<![CDATA[
Provides integration with Subversion VCS.<br/>
@@ -5,6 +5,7 @@
<idea-plugin>
<id>com.intellij.tasks</id>
<name>Task Management</name>
<category>Other Tools</category>
<description>Enables task and context management</description>
<vendor>JetBrains</vendor>
@@ -1,5 +1,6 @@
<idea-plugin xmlns:xi="http://www.w3.org/2001/XInclude">
<name>Terminal</name>
<category>Other Tools</category>
<id>org.jetbrains.plugins.terminal</id>
<vendor>JetBrains</vendor>
<description><![CDATA[
@@ -6,6 +6,7 @@
<p></p>
<p>Originally developed by Theory In Practice.</p>
]]></description>
<category>Test Tools</category>
<vendor>JetBrains</vendor>
<depends>com.intellij.modules.java</depends>
+1
View File
@@ -1,6 +1,7 @@
<idea-plugin>
<id>org.jetbrains.plugins.textmate</id>
<name>TextMate bundles</name>
<category>Other Tools</category>
<vendor>JetBrains</vendor>
<description><![CDATA[
@@ -1,6 +1,7 @@
<idea-plugin>
<name>UI Designer</name>
<id>com.intellij.uiDesigner</id>
<category>Swing</category>
<vendor>JetBrains</vendor>
<resource-bundle>messages.UIDesignerBundle</resource-bundle>
<depends>com.intellij.java-i18n</depends>
@@ -5,6 +5,7 @@
<!-- Plugin name -->
<id>XPathView</id>
<name>XPathView + XSLT</name>
<category>Other Tools</category>
<!-- Description -->
<description><![CDATA[
@@ -1,6 +1,7 @@
<idea-plugin url="https://confluence.jetbrains.com/display/CONTEST/XSLT-Debugger">
<name>XSLT Debugger</name>
<id>XSLT-Debugger</id>
<category>Other Tools</category>
<description><![CDATA[
Allows interactive debugging of XSLT stylesheets.
@@ -2,6 +2,7 @@
<name>YAML</name>
<id>org.jetbrains.plugins.yaml</id>
<vendor>JetBrains</vendor>
<category>Languages</category>
<description><![CDATA[
Adds support for the <a href="https://yaml.org/">YAML</a> language.
]]></description>