mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-229555 Group bundled plugins in Settings | Plugins by category
GitOrigin-RevId: 51b5b8476879e9005983c3a795f59acf52392cb9
This commit is contained in:
committed by
intellij-monorepo-bot
parent
0b10022107
commit
e7a12bd7e3
+33
-53
@@ -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,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,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>
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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,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,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>
|
||||
|
||||
Reference in New Issue
Block a user