summaryrefslogtreecommitdiff
path: root/platform/platform-impl/src/com/intellij/ide/customize/PluginGroups.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/platform-impl/src/com/intellij/ide/customize/PluginGroups.java')
-rw-r--r--platform/platform-impl/src/com/intellij/ide/customize/PluginGroups.java116
1 files changed, 70 insertions, 46 deletions
diff --git a/platform/platform-impl/src/com/intellij/ide/customize/PluginGroups.java b/platform/platform-impl/src/com/intellij/ide/customize/PluginGroups.java
index 930901d55105..b17805579869 100644
--- a/platform/platform-impl/src/com/intellij/ide/customize/PluginGroups.java
+++ b/platform/platform-impl/src/com/intellij/ide/customize/PluginGroups.java
@@ -16,7 +16,6 @@
package com.intellij.ide.customize;
import com.intellij.ide.plugins.IdeaPluginDescriptor;
-import com.intellij.ide.plugins.PluginManager;
import com.intellij.ide.plugins.PluginManagerCore;
import com.intellij.ide.plugins.RepositoryHelper;
import com.intellij.idea.StartupUtil;
@@ -27,19 +26,18 @@ import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.ArrayUtil;
import com.intellij.util.containers.ContainerUtil;
+import icons.PlatformImplIcons;
import org.jetbrains.annotations.Nullable;
+import javax.swing.*;
import java.io.File;
import java.util.*;
-class PluginGroups {
+public class PluginGroups {
static final String CORE = "Core";
private static final int MAX_DESCR_LENGTH = 55;
-
- private static PluginGroups instance = null;
-
- final Map<String, Pair<String, List<String>>> myTree = new LinkedHashMap<String, Pair<String, List<String>>>();
+ final Map<String, Pair<Icon, List<String>>> myTree = new LinkedHashMap<String, Pair<Icon, List<String>>>();
final Map<String, String> myFeaturedPlugins = new LinkedHashMap<String, String>();
private final Map<String, List<IdSet>> myGroups = new LinkedHashMap<String, List<IdSet>>();
@@ -50,15 +48,7 @@ class PluginGroups {
private boolean myInitialized = false;
private Set<String> myFeaturedIds = new HashSet<String>();
-
- static synchronized PluginGroups getInstance() {
- if (instance == null) {
- instance = new PluginGroups();
- }
- return instance;
- }
-
- private PluginGroups() {
+ public PluginGroups() {
myAllPlugins = PluginManagerCore.loadDescriptors(null);
try {
myPluginsFromRepository.addAll(RepositoryHelper.loadPluginsFromRepository(null));
@@ -68,8 +58,12 @@ class PluginGroups {
}
PluginManagerCore.loadDisabledPlugins(new File(PathManager.getConfigPath()).getPath(), myDisabledPluginIds);
+ initGroups(myTree, myFeaturedPlugins);
+ }
- myTree.put(CORE, Pair.create((String)null, Arrays.asList(
+ protected void
+ initGroups(Map<String, Pair<Icon, List<String>>> tree, Map<String, String> featuredPlugins) {
+ tree.put(CORE, Pair.create((Icon)null, Arrays.asList(
"com.intellij.copyright",
"com.intellij.java-i18n",
"org.intellij.intelliLang",
@@ -78,7 +72,7 @@ class PluginGroups {
"Type Migration",
"ZKM"
)));
- myTree.put("Java Frameworks", Pair.create("/plugins/JavaFrameworks.png", Arrays.asList(
+ tree.put("Java Frameworks", Pair.create(PlatformImplIcons.JavaFrameworks, Arrays.asList(
"com.intellij.appengine",
"org.intellij.grails",
"com.intellij.gwt",
@@ -113,12 +107,12 @@ class PluginGroups {
"com.intellij.aspectj",
"Osmorc"
)));
- myTree.put("Build Tools", Pair.create("/plugins/BuildTools.png", Arrays.asList(
+ tree.put("Build Tools", Pair.create(PlatformImplIcons.BuildTools, Arrays.asList(
"AntSupport",
"Maven:org.jetbrains.idea.maven,org.jetbrains.idea.maven.ext",
"org.jetbrains.plugins.gradle"
)));
- myTree.put("Web Development", Pair.create("/plugins/WebDevelopment.png", Arrays.asList(
+ tree.put("Web Development", Pair.create(PlatformImplIcons.WebDevelopment, Arrays.asList(
"HTML:HtmlTools,QuirksMode,W3Validators",
"org.jetbrains.plugins.haml",
"com.jetbrains.plugins.jade",
@@ -132,24 +126,17 @@ class PluginGroups {
"com.intellij.plugins.html.instantEditing",
"com.jetbrains.restClient"
)));
- myTree.put("Version Controls", Pair.create("/plugins/VersionControls.png", Arrays.asList(
- "ClearcasePlugin",
- "CVS",
- "Git4Idea",
- "org.jetbrains.plugins.github",
- "hg4idea",
- "PerforceDirectPlugin",
- "Subversion",
- "TFS"
- )));
- myTree.put("Test Tools", Pair.create("/plugins/TestTools.png", Arrays.asList(
+
+ addVcsGroup(tree);
+
+ tree.put("Test Tools", Pair.create(PlatformImplIcons.TestTools, Arrays.asList(
"JUnit",
"TestNG-J",
"cucumber-java",
"cucumber",
"Coverage:Coverage,Emma"
)));
- myTree.put("Application Servers", Pair.create("/plugins/ApplicationServers.png", Arrays.asList(
+ tree.put("Application Servers", Pair.create(PlatformImplIcons.ApplicationServers, Arrays.asList(
"com.intellij.javaee.view",
"Geronimo",
"GlassFish",
@@ -162,7 +149,7 @@ class PluginGroups {
"com.intellij.dmserver",
"JSR45Plugin"
)));
- myTree.put("Clouds", Pair.create("/plugins/Clouds.png", Arrays.asList(
+ tree.put("Clouds", Pair.create(PlatformImplIcons.Clouds, Arrays.asList(
"CloudFoundry",
"CloudBees",
"Heroku",
@@ -170,16 +157,16 @@ class PluginGroups {
)));
//myTree.put("Groovy", Arrays.asList("org.intellij.grails"));
//TODO Scala -> Play 2.x (Play 2.0 Support)
- myTree.put("Swing", Pair.create("/plugins/Swing.png", Arrays.asList(
+ tree.put("Swing", Pair.create(PlatformImplIcons.Swing, Arrays.asList(
"com.intellij.uiDesigner"//TODO JavaFX?
)));
- myTree.put("Android", Pair.create("/plugins/Android.png", Arrays.asList(
+ tree.put("Android", Pair.create(PlatformImplIcons.Android, Arrays.asList(
"org.jetbrains.android",
"com.intellij.android-designer")));
- myTree.put("Database Tools", Pair.create("/plugins/DatabaseTools.png", Arrays.asList(
+ tree.put("Database Tools", Pair.create(PlatformImplIcons.DatabaseTools, Arrays.asList(
"com.intellij.database"
)));
- myTree.put("Other Tools", Pair.create("/plugins/OtherTools.png", Arrays.asList(
+ tree.put("Other Tools", Pair.create(PlatformImplIcons.OtherTools, Arrays.asList(
"ByteCodeViewer",
"com.intellij.dsm",
"org.jetbrains.idea.eclipse",
@@ -190,27 +177,63 @@ class PluginGroups {
"org.jetbrains.plugins.yaml",
"XSLT and XPath:XPathView,XSLT-Debugger"
)));
- myTree.put("Plugin Development", Pair.create("/plugins/PluginDevelopment.png", Arrays.asList("DevKit")));
+ tree.put("Plugin Development", Pair.create(PlatformImplIcons.PluginDevelopment, Arrays.asList("DevKit")));
+
+ featuredPlugins.put("Scala", "Custom Languages:Plugin for Scala language support:org.intellij.scala");
+ featuredPlugins.put("Live Edit Tool",
+ "Web Development:Provides live edit HTML/CSS/JavaScript:com.intellij.plugins.html.instantEditing");
+ addVimPlugin(featuredPlugins);
+ featuredPlugins.put("NodeJS", "JavaScript:Node.js integration:NodeJS");
+ featuredPlugins.put("Atlassian Connector",
+ "Tools Integration:Integration for Atlassian JIRA, Bamboo, Cricible, FishEye:atlassian-idea-plugin");
+ }
- myFeaturedPlugins.put("Scala", "Custom Languages:Plugin for Scala language support:org.intellij.scala");
- myFeaturedPlugins.put("Live Edit Tool", "Web Development:Provides live edit HTML/CSS/JavaScript:com.intellij.plugins.html.instantEditing");
- myFeaturedPlugins.put("IdeaVIM", "Editor:Vim emulation plug-in for IDEs based on the IntelliJ platform:IdeaVIM");
- myFeaturedPlugins.put("NodeJS", "JavaScript:Node.js integration:NodeJS");
- myFeaturedPlugins.put("Atlassian Connector", "Tools Integration:Integration for Atlassian JIRA, Bamboo, Cricible, FishEye:atlassian-idea-plugin");
+ protected static void addVcsGroup(Map<String, Pair<Icon, List<String>>> tree) {
+ tree.put("Version Controls", Pair.create(PlatformImplIcons.VersionControls, Arrays.asList(
+ "ClearcasePlugin",
+ "CVS",
+ "Git4Idea",
+ "org.jetbrains.plugins.github",
+ "hg4idea",
+ "PerforceDirectPlugin",
+ "Subversion",
+ "TFS"
+ )));
+ }
+ protected static void addVimPlugin(Map<String, String> featuredPlugins) {
+ featuredPlugins.put("IdeaVIM", "Editor:Vim emulation plug-in for IDEs based on the IntelliJ platform:IdeaVIM");
+ }
+
+ protected static void addLuaPlugin(Map<String, String> featuredPlugins) {
+ featuredPlugins.put("Lua", "Custom Languages:Lua language integration:Lua");
+ }
+
+ protected static void addMarkdownPlugin(Map<String, String> featuredPlugins) {
+ featuredPlugins.put("Markdown", "Custom Languages:Markdown language integration:net.nicoulaj.idea.markdown");
+ }
+
+ protected static void addConfigurationServerPlugin(Map<String, String> featuredPlugins) {
+ featuredPlugins.put("Configuration Server",
+ "Team Work:Supports sharing settings between installations of IntelliJ Platform based products used by the same developer on different computers:IdeaServerPlugin");
+ }
+
+ protected static void addTeamCityPlugin(Map<String, String> featuredPlugins) {
+ featuredPlugins.put("TeamCity Integration",
+ "Tools Integration:Integration with JetBrains TeamCity - innovative solution for continuous integration and build management:Jetbrains TeamCity Plugin");
}
private void initIfNeed() {
if (myInitialized) return;
myInitialized = true;
- for (Map.Entry<String, Pair<String, List<String>>> entry : myTree.entrySet()) {
+ for (Map.Entry<String, Pair<Icon, List<String>>> entry : myTree.entrySet()) {
final String group = entry.getKey();
if (CORE.equals(group)) continue;
List<IdSet> idSets = new ArrayList<IdSet>();
StringBuilder description = new StringBuilder();
for (String idDescription : entry.getValue().getSecond()) {
- IdSet idSet = new IdSet(idDescription);
+ IdSet idSet = new IdSet(this, idDescription);
String idSetTitle = idSet.getTitle();
if (idSetTitle == null) continue;
idSets.add(idSet);
@@ -230,7 +253,7 @@ class PluginGroups {
}
}
- Map<String, Pair<String, List<String>>> getTree() {
+ Map<String, Pair<Icon, List<String>>> getTree() {
initIfNeed();
return myTree;
}
@@ -302,7 +325,8 @@ class PluginGroups {
void setFeaturedPluginEnabled(String pluginId, boolean enabled) {
if (enabled) {
myFeaturedIds.add(pluginId);
- } else {
+ }
+ else {
myFeaturedIds.remove(pluginId);
}
StartupUtil.setFeaturedPluginsToInstall(myFeaturedIds);