From 8b6f6905e9f83ec01318e36a2851fbfaac789e89 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 31 Jan 2013 16:56:08 +0100 Subject: [PATCH] separate button for installing JetBrains-provided plugin in plugin manager (IDEA-100233) --- .../plugins/AvailablePluginsManagerMain.java | 34 ++++++----- .../plugins/AvailablePluginsTableModel.java | 10 ++++ .../plugins/InstalledPluginsManagerMain.java | 57 ++++++++++++------- 3 files changed, 65 insertions(+), 36 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/AvailablePluginsManagerMain.java b/platform/platform-impl/src/com/intellij/ide/plugins/AvailablePluginsManagerMain.java index 71d0cb4b8723..c6ea94126922 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/AvailablePluginsManagerMain.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/AvailablePluginsManagerMain.java @@ -46,26 +46,30 @@ public class AvailablePluginsManagerMain extends PluginManagerMain { public static final String N_A = "N/A"; private PluginManagerMain installed; + private final String myVendorFilter; - public AvailablePluginsManagerMain(PluginManagerMain installed, PluginManagerUISettings uiSettings) { + public AvailablePluginsManagerMain(PluginManagerMain installed, PluginManagerUISettings uiSettings, String vendorFilter) { super(uiSettings); this.installed = installed; + myVendorFilter = vendorFilter; init(); final JButton manageRepositoriesBtn = new JButton(MANAGE_REPOSITORIES); - manageRepositoriesBtn.setMnemonic('m'); - manageRepositoriesBtn.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - if (ShowSettingsUtil.getInstance().editConfigurable(myActionsPanel, new PluginHostsConfigurable())) { - final ArrayList pluginHosts = UpdateSettings.getInstance().myPluginHosts; - if (!pluginHosts.contains(((AvailablePluginsTableModel)pluginsModel).getRepository())) { - ((AvailablePluginsTableModel)pluginsModel).setRepository(AvailablePluginsTableModel.ALL, myFilter.getFilter().toLowerCase()); + if (myVendorFilter == null) { + manageRepositoriesBtn.setMnemonic('m'); + manageRepositoriesBtn.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (ShowSettingsUtil.getInstance().editConfigurable(myActionsPanel, new PluginHostsConfigurable())) { + final ArrayList pluginHosts = UpdateSettings.getInstance().myPluginHosts; + if (!pluginHosts.contains(((AvailablePluginsTableModel)pluginsModel).getRepository())) { + ((AvailablePluginsTableModel)pluginsModel).setRepository(AvailablePluginsTableModel.ALL, myFilter.getFilter().toLowerCase()); + } + loadAvailablePlugins(); } - loadAvailablePlugins(); } - } - }); - myActionsPanel.add(manageRepositoriesBtn, BorderLayout.EAST); + }); + myActionsPanel.add(manageRepositoriesBtn, BorderLayout.EAST); + } final JButton httpProxySettingsButton = new JButton(IdeBundle.message("button.http.proxy.settings")); httpProxySettingsButton.addActionListener(new ActionListener() { @@ -83,7 +87,9 @@ public class AvailablePluginsManagerMain extends PluginManagerMain { @Override protected JScrollPane createTable() { - pluginsModel = new AvailablePluginsTableModel(); + AvailablePluginsTableModel model = new AvailablePluginsTableModel(); + model.setVendor(myVendorFilter); + pluginsModel = model; pluginTable = new PluginTable(pluginsModel); pluginTable.getTableHeader().setReorderingAllowed(false); pluginTable.setColumnWidth(PluginManagerColumnInfo.COLUMN_DOWNLOADS, 70); diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/AvailablePluginsTableModel.java b/platform/platform-impl/src/com/intellij/ide/plugins/AvailablePluginsTableModel.java index ac21018d7f3a..c58bb0dfd1c2 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/AvailablePluginsTableModel.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/AvailablePluginsTableModel.java @@ -46,6 +46,7 @@ public class AvailablePluginsTableModel extends PluginTableModel { public static final String JETBRAINS_REPO = "JetBrains"; private String myRepository = ALL; + private String myVendor = null; public AvailablePluginsTableModel() { super.columns = new ColumnInfo[] { @@ -73,6 +74,11 @@ public class AvailablePluginsTableModel extends PluginTableModel { filter(filter); } + public void setVendor(String vendor) { + myVendor = vendor; + filter(""); + } + @Override public boolean isPluginDescriptorAccepted(IdeaPluginDescriptor descriptor) { final String category = descriptor.getCategory(); @@ -80,6 +86,10 @@ public class AvailablePluginsTableModel extends PluginTableModel { if (!ALL.equals(myCategory) && !category.equals(myCategory)) return false; } + if (myVendor != null && !descriptor.getVendor().toLowerCase().contains(myVendor.toLowerCase())) { + return false; + } + final String repositoryName = ((PluginNode)descriptor).getRepositoryName(); if (repositoryName != null) { if (!ALL.equals(myRepository) && !repositoryName.equals(myRepository)) return false; diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/InstalledPluginsManagerMain.java b/platform/platform-impl/src/com/intellij/ide/plugins/InstalledPluginsManagerMain.java index a47e14a74848..58d2dcad2489 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/InstalledPluginsManagerMain.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/InstalledPluginsManagerMain.java @@ -57,27 +57,14 @@ public class InstalledPluginsManagerMain extends PluginManagerMain { super(uiSettings); init(); myActionsPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); + final JButton jbButton = new JButton("Install JetBrains plugin..."); + jbButton.setMnemonic('j'); + jbButton.addActionListener(new BrowseRepoListener("JetBrains")); + myActionsPanel.add(jbButton); + final JButton button = new JButton("Browse repositories..."); button.setMnemonic('b'); - button.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - final PluginManagerConfigurable configurable = createAvailableConfigurable(); - final SingleConfigurableEditor configurableEditor = - new SingleConfigurableEditor(myActionsPanel, configurable, ShowSettingsUtilImpl.createDimensionKey(configurable), false) { - { - setOKButtonText(CommonBundle.message("close.action.name")); - setOKButtonMnemonic('C'); - } - - @Override - protected Action[] createActions() { - return new Action[]{getOKAction()}; - } - }; - configurableEditor.show(); - } - }); + button.addActionListener(new BrowseRepoListener(null)); myActionsPanel.add(button); final JButton installPluginFromFileSystem = new JButton("Install plugin from disk..."); @@ -202,16 +189,16 @@ public class InstalledPluginsManagerMain extends PluginManagerMain { protected void propagateUpdates(ArrayList list) { } - private PluginManagerConfigurable createAvailableConfigurable() { + private PluginManagerConfigurable createAvailableConfigurable(final String vendorFilter) { return new PluginManagerConfigurable(PluginManagerUISettings.getInstance(), true) { @Override protected PluginManagerMain createPanel() { - return new AvailablePluginsManagerMain(InstalledPluginsManagerMain.this, myUISettings); + return new AvailablePluginsManagerMain(InstalledPluginsManagerMain.this, myUISettings, vendorFilter); } @Override public String getDisplayName() { - return "Browse Repositories"; + return vendorFilter != null ? "Browse " + vendorFilter + " Plugins " : "Browse Repositories"; } }; } @@ -381,4 +368,30 @@ public class InstalledPluginsManagerMain extends PluginManagerMain { } } + private class BrowseRepoListener implements ActionListener { + + private final String myVendor; + + public BrowseRepoListener(String vendor) { + myVendor = vendor; + } + + @Override + public void actionPerformed(ActionEvent e) { + final PluginManagerConfigurable configurable = createAvailableConfigurable(myVendor); + final SingleConfigurableEditor configurableEditor = + new SingleConfigurableEditor(myActionsPanel, configurable, ShowSettingsUtilImpl.createDimensionKey(configurable), false) { + { + setOKButtonText(CommonBundle.message("close.action.name")); + setOKButtonMnemonic('C'); + } + + @Override + protected Action[] createActions() { + return new Action[]{getOKAction()}; + } + }; + configurableEditor.show(); + } + } }