diff options
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.java | 116 |
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); |