separate button for installing JetBrains-provided plugin in plugin manager (IDEA-100233)

This commit is contained in:
Dmitry Jemerov
2013-01-31 18:07:12 +01:00
parent c230877ac7
commit 8b6f6905e9
3 changed files with 65 additions and 36 deletions
@@ -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<String> 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<String> 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);
@@ -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;
@@ -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<IdeaPluginDescriptor> 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();
}
}
}