diff options
Diffstat (limited to 'platform/platform-impl/src/com/intellij/ide/customize')
8 files changed, 180 insertions, 99 deletions
diff --git a/platform/platform-impl/src/com/intellij/ide/customize/CustomizeFeaturedPluginsStepPanel.java b/platform/platform-impl/src/com/intellij/ide/customize/CustomizeFeaturedPluginsStepPanel.java index c7c729c89424..786a5825e783 100644 --- a/platform/platform-impl/src/com/intellij/ide/customize/CustomizeFeaturedPluginsStepPanel.java +++ b/platform/platform-impl/src/com/intellij/ide/customize/CustomizeFeaturedPluginsStepPanel.java @@ -50,7 +50,7 @@ public class CustomizeFeaturedPluginsStepPanel extends AbstractCustomizeWizardSt public final AtomicBoolean myCanceled = new AtomicBoolean(false); - public CustomizeFeaturedPluginsStepPanel() throws OfflineException { + public CustomizeFeaturedPluginsStepPanel(PluginGroups pluginGroups) throws OfflineException { setLayout(new GridLayout(1, 1)); JPanel gridPanel = new JPanel(new GridLayout(0, 3)); JBScrollPane scrollPane = @@ -58,9 +58,9 @@ public class CustomizeFeaturedPluginsStepPanel extends AbstractCustomizeWizardSt scrollPane.getVerticalScrollBar().setUnitIncrement(10); scrollPane.setBorder(null); - Map<String, String> config = PluginGroups.getInstance().getFeaturedPlugins(); + Map<String, String> config = pluginGroups.getFeaturedPlugins(); boolean isEmptyOrOffline = true; - List<IdeaPluginDescriptor> pluginsFromRepository = PluginGroups.getInstance().getPluginsFromRepository(); + List<IdeaPluginDescriptor> pluginsFromRepository = pluginGroups.getPluginsFromRepository(); for (Map.Entry<String, String> entry : config.entrySet()) { JPanel groupPanel = new JPanel(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); @@ -263,5 +263,5 @@ public class CustomizeFeaturedPluginsStepPanel extends AbstractCustomizeWizardSt return "New plugins can also be downloaded in " + CommonBundle.settingsTitle() + " | Plugins"; } - static class OfflineException extends Exception {}; + public static class OfflineException extends Exception {}; } diff --git a/platform/platform-impl/src/com/intellij/ide/customize/CustomizeIDEWizardDialog.java b/platform/platform-impl/src/com/intellij/ide/customize/CustomizeIDEWizardDialog.java index 1b0644a3a20f..be37f9d9d7f6 100644 --- a/platform/platform-impl/src/com/intellij/ide/customize/CustomizeIDEWizardDialog.java +++ b/platform/platform-impl/src/com/intellij/ide/customize/CustomizeIDEWizardDialog.java @@ -16,6 +16,7 @@ package com.intellij.ide.customize; import com.intellij.ide.startup.StartupActionScriptManager; +import com.intellij.idea.Main; import com.intellij.openapi.application.ApplicationNamesInfo; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.util.SystemInfo; @@ -62,6 +63,26 @@ public class CustomizeIDEWizardDialog extends DialogWrapper implements ActionLis System.setProperty(StartupActionScriptManager.STARTUP_WIZARD_MODE, "true"); } + public static void showCustomSteps(String stepsProviderName) { + final CustomizeIDEWizardStepsProvider provider; + + try { + Class<CustomizeIDEWizardStepsProvider> providerClass = (Class<CustomizeIDEWizardStepsProvider>)Class.forName(stepsProviderName); + provider = providerClass.newInstance(); + } + catch (Throwable e) { + Main.showMessage("Start Failed", e); + return; + } + + new CustomizeIDEWizardDialog() { + @Override + protected void initSteps() { + provider.initSteps(this, mySteps); + } + }.show(); + } + @Override protected void dispose() { System.clearProperty(StartupActionScriptManager.STARTUP_WIZARD_MODE); @@ -73,9 +94,11 @@ public class CustomizeIDEWizardDialog extends DialogWrapper implements ActionLis if (SystemInfo.isMac) { mySteps.add(new CustomizeKeyboardSchemeStepPanel()); } - mySteps.add(new CustomizePluginsStepPanel()); + + PluginGroups pluginGroups = new PluginGroups(); + mySteps.add(new CustomizePluginsStepPanel(pluginGroups)); try { - mySteps.add(new CustomizeFeaturedPluginsStepPanel()); + mySteps.add(new CustomizeFeaturedPluginsStepPanel(pluginGroups)); } catch (CustomizeFeaturedPluginsStepPanel.OfflineException e) { //skip featured step if we're offline diff --git a/platform/platform-impl/src/com/intellij/ide/customize/CustomizeIDEWizardStepsProvider.java b/platform/platform-impl/src/com/intellij/ide/customize/CustomizeIDEWizardStepsProvider.java new file mode 100644 index 000000000000..ceea34db05fd --- /dev/null +++ b/platform/platform-impl/src/com/intellij/ide/customize/CustomizeIDEWizardStepsProvider.java @@ -0,0 +1,25 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.ide.customize; + +import java.util.List; + +/** + * @author Alexander Lobas + */ +public interface CustomizeIDEWizardStepsProvider { + void initSteps(CustomizeIDEWizardDialog wizardDialog, List<AbstractCustomizeWizardStep> steps); +}
\ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/ide/customize/CustomizeKeyboardSchemeStepPanel.java b/platform/platform-impl/src/com/intellij/ide/customize/CustomizeKeyboardSchemeStepPanel.java index 2b35ebe7a6fc..53b215516c09 100644 --- a/platform/platform-impl/src/com/intellij/ide/customize/CustomizeKeyboardSchemeStepPanel.java +++ b/platform/platform-impl/src/com/intellij/ide/customize/CustomizeKeyboardSchemeStepPanel.java @@ -94,6 +94,6 @@ public class CustomizeKeyboardSchemeStepPanel extends AbstractCustomizeWizardSte @Override public String getHTMLFooter() { - return "Keymap scheme can be later changed in " + CommonBundle.settingsTitle() + " | Keymap"; + return "Keymap scheme can be changed later in " + CommonBundle.settingsTitle() + " | Keymap"; } } diff --git a/platform/platform-impl/src/com/intellij/ide/customize/CustomizePluginsStepPanel.java b/platform/platform-impl/src/com/intellij/ide/customize/CustomizePluginsStepPanel.java index 9bd14b69cb47..8924c09780dd 100644 --- a/platform/platform-impl/src/com/intellij/ide/customize/CustomizePluginsStepPanel.java +++ b/platform/platform-impl/src/com/intellij/ide/customize/CustomizePluginsStepPanel.java @@ -19,7 +19,6 @@ import com.intellij.ide.plugins.PluginManager; import com.intellij.openapi.application.ApplicationNamesInfo; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.VerticalFlowLayout; -import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.Pair; import com.intellij.ui.ColorUtil; import com.intellij.ui.JBCardLayout; @@ -52,9 +51,11 @@ public class CustomizePluginsStepPanel extends AbstractCustomizeWizardStep imple private static final String CUSTOMIZE_COMMAND = "Customize"; private final JBCardLayout myCardLayout; private final IdSetPanel myCustomizePanel; + private final PluginGroups myPluginGroups; - public CustomizePluginsStepPanel() { + public CustomizePluginsStepPanel(PluginGroups pluginGroups) { + myPluginGroups = pluginGroups; myCardLayout = new JBCardLayout(); setLayout(myCardLayout); JPanel gridPanel = new JPanel(new GridLayout(0, COLS)); @@ -66,8 +67,8 @@ public class CustomizePluginsStepPanel extends AbstractCustomizeWizardStep imple add(scrollPane, MAIN); add(myCustomizePanel, CUSTOMIZE); - Map<String, Pair<String, List<String>>> groups = PluginGroups.getInstance().getTree(); - for (final Map.Entry<String, Pair<String, List<String>>> entry : groups.entrySet()) { + Map<String, Pair<Icon, List<String>>> groups = pluginGroups.getTree(); + for (final Map.Entry<String, Pair<Icon, List<String>>> entry : groups.entrySet()) { final String group = entry.getKey(); if (PluginGroups.CORE.equals(group)) continue; @@ -89,10 +90,10 @@ public class CustomizePluginsStepPanel extends AbstractCustomizeWizardStep imple return isGroupEnabled(group); } }; - groupPanel.add(new JLabel(IconLoader.getIcon(entry.getValue().getFirst())), gbc); + groupPanel.add(new JLabel(entry.getValue().getFirst()), gbc); //gbc.insets.bottom = 5; groupPanel.add(titleLabel, gbc); - JLabel descriptionLabel = new JLabel(PluginGroups.getInstance().getDescription(group), SwingConstants.CENTER) { + JLabel descriptionLabel = new JLabel(pluginGroups.getDescription(group), SwingConstants.CENTER) { @Override public Dimension getPreferredSize() { Dimension size = super.getPreferredSize(); @@ -116,7 +117,7 @@ public class CustomizePluginsStepPanel extends AbstractCustomizeWizardStep imple gbc.weighty = 0; JPanel buttonsPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 10, 5)); buttonsPanel.setOpaque(false); - if (PluginGroups.getInstance().getSets(group).size() == 1) { + if (pluginGroups.getSets(group).size() == 1) { buttonsPanel.add(createLink(SWITCH_COMMAND + ":" + group, getGroupSwitchTextProvider(group))); } else { @@ -152,11 +153,11 @@ public class CustomizePluginsStepPanel extends AbstractCustomizeWizardStep imple if (SWITCH_COMMAND.equals(command)) { boolean enabled = isGroupEnabled(group); - List<IdSet> sets = PluginGroups.getInstance().getSets(group); + List<IdSet> sets = myPluginGroups.getSets(group); for (IdSet idSet : sets) { String[] ids = idSet.getIds(); for (String id : ids) { - PluginGroups.getInstance().setPluginEnabledWithDependencies(id, !enabled); + myPluginGroups.setPluginEnabledWithDependencies(id, !enabled); } } repaint(); @@ -190,17 +191,17 @@ public class CustomizePluginsStepPanel extends AbstractCustomizeWizardStep imple @Override public String getText() { return (isGroupEnabled(group) ? "Disable" : "Enable") + - (PluginGroups.getInstance().getSets(group).size() > 1 ? " All" : ""); + (myPluginGroups.getSets(group).size() > 1 ? " All" : ""); } }; } private boolean isGroupEnabled(String group) { - List<IdSet> sets = PluginGroups.getInstance().getSets(group); + List<IdSet> sets = myPluginGroups.getSets(group); for (IdSet idSet : sets) { String[] ids = idSet.getIds(); for (String id : ids) { - if (PluginGroups.getInstance().isPluginEnabled(id)) return true; + if (myPluginGroups.isPluginEnabled(id)) return true; } } return false; @@ -229,7 +230,7 @@ public class CustomizePluginsStepPanel extends AbstractCustomizeWizardStep imple @Override public boolean beforeOkAction() { try { - PluginManager.saveDisabledPlugins(PluginGroups.getInstance().getDisabledPluginIds(), false); + PluginManager.saveDisabledPlugins(myPluginGroups.getDisabledPluginIds(), false); } catch (IOException ignored) { } @@ -269,9 +270,9 @@ public class CustomizePluginsStepPanel extends AbstractCustomizeWizardStep imple public void linkSelected(LinkLabel aSource, String command) { if (myGroup == null) return; boolean enable = "enable".equals(command); - List<IdSet> idSets = PluginGroups.getInstance().getSets(myGroup); + List<IdSet> idSets = myPluginGroups.getSets(myGroup); for (IdSet set : idSets) { - PluginGroups.getInstance().setIdSetEnabled(set, enable); + myPluginGroups.setIdSetEnabled(set, enable); } CustomizePluginsStepPanel.this.repaint(); } @@ -280,19 +281,19 @@ public class CustomizePluginsStepPanel extends AbstractCustomizeWizardStep imple myGroup = group; myTitleLabel.setText("<html><body><h2 style=\"text-align:left;\">" + group + "</h2></body></html>"); myContentPanel.removeAll(); - List<IdSet> idSets = PluginGroups.getInstance().getSets(group); + List<IdSet> idSets = myPluginGroups.getSets(group); for (final IdSet set : idSets) { - final JCheckBox checkBox = new JCheckBox(set.getTitle(), PluginGroups.getInstance().isIdSetAllEnabled(set)); + final JCheckBox checkBox = new JCheckBox(set.getTitle(), myPluginGroups.isIdSetAllEnabled(set)); checkBox.setModel(new JToggleButton.ToggleButtonModel() { @Override public boolean isSelected() { - return PluginGroups.getInstance().isIdSetAllEnabled(set); + return myPluginGroups.isIdSetAllEnabled(set); } }); checkBox.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - PluginGroups.getInstance().setIdSetEnabled(set, !checkBox.isSelected()); + myPluginGroups.setIdSetEnabled(set, !checkBox.isSelected()); CustomizePluginsStepPanel.this.repaint(); } }); diff --git a/platform/platform-impl/src/com/intellij/ide/customize/CustomizeUIThemeStepPanel.java b/platform/platform-impl/src/com/intellij/ide/customize/CustomizeUIThemeStepPanel.java index 1af2fb883efb..b369e49f8bca 100644 --- a/platform/platform-impl/src/com/intellij/ide/customize/CustomizeUIThemeStepPanel.java +++ b/platform/platform-impl/src/com/intellij/ide/customize/CustomizeUIThemeStepPanel.java @@ -34,12 +34,12 @@ import java.util.LinkedHashMap; import java.util.Map; public class CustomizeUIThemeStepPanel extends AbstractCustomizeWizardStep { + protected static final String DEFAULT = "Default"; + protected static final String DARCULA = "Darcula"; + protected static final String INTELLIJ = "IntelliJ"; + protected static final String ALLOY = "Alloy. IDEA Theme"; + protected static final String GTK = "GTK+"; - private static final String DEFAULT = "Default"; - private static final String DARCULA = "Darcula"; - private static final String INTELLIJ = "IntelliJ"; - private static final String ALLOY = "Alloy. IDEA Theme"; - private static final String GTK = "GTK+"; private boolean myInitial = true; private boolean myColumnMode; private JLabel myPreviewLabel; @@ -49,24 +49,8 @@ public class CustomizeUIThemeStepPanel extends AbstractCustomizeWizardStep { setLayout(new BorderLayout(10, 10)); IconLoader.activate(); - if (SystemInfo.isMac) { - myLafNames.put(DEFAULT, IconLoader.getIcon("/lafs/OSXAqua.png")); - myLafNames.put(DARCULA, IconLoader.getIcon("/lafs/OSXDarcula.png")); - } - else if (SystemInfo.isWindows) { - //if (PlatformUtils.isIdeaCommunity()) { - myLafNames.put(INTELLIJ, IconLoader.getIcon("/lafs/WindowsIntelliJ.png")); - //} - //else { - // myLafNames.put(ALLOY, IconLoader.getIcon("/lafs/WindowsAlloy.png")); - //} - myLafNames.put(DARCULA, IconLoader.getIcon("/lafs/WindowsDarcula.png")); - } - else { - myLafNames.put(INTELLIJ, IconLoader.getIcon("/lafs/LinuxIntelliJ.png")); - myLafNames.put(DARCULA, IconLoader.getIcon("/lafs/LinuxDarcula.png")); - myLafNames.put(GTK, IconLoader.getIcon("/lafs/LinuxGTK.png")); - } + initLafs(); + myColumnMode = myLafNames.size() > 2; JPanel buttonsPanel = new JPanel(new GridLayout(myColumnMode ? myLafNames.size() : 1, myColumnMode ? 1 : myLafNames.size(), 5, 5)); ButtonGroup group = new ButtonGroup(); @@ -111,6 +95,31 @@ public class CustomizeUIThemeStepPanel extends AbstractCustomizeWizardStep { myInitial = false; } + protected void initLafs() { + if (SystemInfo.isMac) { + addLaf(DEFAULT, "/lafs/OSXAqua.png"); + addLaf(DARCULA, "/lafs/OSXDarcula.png"); + } + else if (SystemInfo.isWindows) { + //if (PlatformUtils.isIdeaCommunity()) { + addLaf(INTELLIJ,"/lafs/WindowsIntelliJ.png"); + //} + //else { + // addLaf(ALLOY, "/lafs/WindowsAlloy.png"); + //} + addLaf(DARCULA, "/lafs/WindowsDarcula.png"); + } + else { + addLaf(INTELLIJ, "/lafs/LinuxIntelliJ.png"); + addLaf(DARCULA, "/lafs/LinuxDarcula.png"); + addLaf(GTK, "/lafs/LinuxGTK.png"); + } + } + + protected final void addLaf(String name, String icon) { + myLafNames.put(name, IconLoader.getIcon(icon)); + } + @Override public Dimension getPreferredSize() { Dimension size = super.getPreferredSize(); @@ -118,7 +127,6 @@ public class CustomizeUIThemeStepPanel extends AbstractCustomizeWizardStep { return size; } - @Override public String getTitle() { return "UI Themes"; diff --git a/platform/platform-impl/src/com/intellij/ide/customize/IdSet.java b/platform/platform-impl/src/com/intellij/ide/customize/IdSet.java index 47f8863b9ceb..fb406d21359a 100644 --- a/platform/platform-impl/src/com/intellij/ide/customize/IdSet.java +++ b/platform/platform-impl/src/com/intellij/ide/customize/IdSet.java @@ -28,7 +28,7 @@ class IdSet { String myTitle; String[] myIds; - IdSet(String description) { + IdSet(final PluginGroups pluginGroups, String description) { int i = description.indexOf(":"); if (i > 0) { myTitle = description.substring(0, i); @@ -38,7 +38,7 @@ class IdSet { myIds = ContainerUtil.filter(myIds, new Condition<String>() { @Override public boolean value(String id) { - return PluginGroups.getInstance().findPlugin(id) != null; + return pluginGroups.findPlugin(id) != null; } }).toArray(new String[]{}); @@ -47,7 +47,7 @@ class IdSet { } if (myTitle == null && myIds.length>0) { //noinspection ConstantConditions - myTitle = PluginGroups.getInstance().findPlugin(myIds[0]).getName(); + myTitle = pluginGroups.findPlugin(myIds[0]).getName(); } if (myTitle != null) { for (String skipWord : BLACK_LIST) { 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); |