diff options
Diffstat (limited to 'platform/platform-impl/src/com/intellij/ide/plugins')
-rw-r--r-- | platform/platform-impl/src/com/intellij/ide/plugins/AvailablePluginsManagerMain.java | 24 | ||||
-rw-r--r-- | platform/platform-impl/src/com/intellij/ide/plugins/PluginManager.java | 57 |
2 files changed, 37 insertions, 44 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 62609d9ba5fc..0ae246d41715 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/AvailablePluginsManagerMain.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/AvailablePluginsManagerMain.java @@ -29,7 +29,7 @@ import com.intellij.openapi.updateSettings.impl.UpdateSettings; import com.intellij.ui.DoubleClickListener; import com.intellij.ui.ScrollPaneFactory; import com.intellij.ui.TableUtil; -import com.intellij.util.net.HTTPProxySettingsDialog; +import com.intellij.util.net.HttpConfigurable; import com.intellij.util.ui.update.UiNotifyConnector; import org.jetbrains.annotations.NotNull; @@ -41,6 +41,7 @@ import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.TreeSet; /** @@ -50,7 +51,7 @@ public class AvailablePluginsManagerMain extends PluginManagerMain { public static final String MANAGE_REPOSITORIES = "Manage repositories..."; public static final String N_A = "N/A"; - private PluginManagerMain installed; + private final PluginManagerMain installed; private final String myVendorFilter; public AvailablePluginsManagerMain(PluginManagerMain installed, PluginManagerUISettings uiSettings, String vendorFilter) { @@ -63,11 +64,11 @@ public class AvailablePluginsManagerMain extends PluginManagerMain { manageRepositoriesBtn.setMnemonic('m'); manageRepositoriesBtn.addActionListener(new ActionListener() { @Override - public void actionPerformed(ActionEvent e) { + public void actionPerformed(@NotNull 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()); + ((AvailablePluginsTableModel)pluginsModel).setRepository(AvailablePluginsTableModel.ALL, myFilter.getFilter().toLowerCase(Locale.ENGLISH)); } loadAvailablePlugins(); } @@ -78,11 +79,9 @@ public class AvailablePluginsManagerMain extends PluginManagerMain { final JButton httpProxySettingsButton = new JButton(IdeBundle.message("button.http.proxy.settings")); httpProxySettingsButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - HTTPProxySettingsDialog settingsDialog = new HTTPProxySettingsDialog(); - settingsDialog.pack(); - settingsDialog.show(); - if (settingsDialog.isOK()) { + @Override + public void actionPerformed(@NotNull ActionEvent e) { + if (HttpConfigurable.editConfigurable(getMainPanel())) { loadAvailablePlugins(); } } @@ -114,7 +113,8 @@ public class AvailablePluginsManagerMain extends PluginManagerMain { pluginTable.registerKeyboardAction( new ActionListener() { - public void actionPerformed(ActionEvent e) { + @Override + public void actionPerformed(@NotNull ActionEvent e) { installSelected(pluginTable); } }, @@ -235,7 +235,7 @@ public class AvailablePluginsManagerMain extends PluginManagerMain { return new AnAction(availableCategory) { @Override public void actionPerformed(AnActionEvent e) { - final String filter = myFilter.getFilter().toLowerCase(); + final String filter = myFilter.getFilter().toLowerCase(Locale.ENGLISH); ((AvailablePluginsTableModel)pluginsModel).setCategory(availableCategory, filter); } }; @@ -277,7 +277,7 @@ public class AvailablePluginsManagerMain extends PluginManagerMain { return new AnAction(host) { @Override public void actionPerformed(AnActionEvent e) { - final String filter = myFilter.getFilter().toLowerCase(); + final String filter = myFilter.getFilter().toLowerCase(Locale.ENGLISH); ((AvailablePluginsTableModel)pluginsModel).setRepository(host, filter); TableUtil.ensureSelectionExists(getPluginTable()); } diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/PluginManager.java b/platform/platform-impl/src/com/intellij/ide/plugins/PluginManager.java index a1ea238835cd..57329fb8fe9d 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/PluginManager.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/PluginManager.java @@ -15,6 +15,7 @@ */ package com.intellij.ide.plugins; +import com.intellij.diagnostic.PluginException; import com.intellij.ide.ClassUtilCore; import com.intellij.ide.IdeBundle; import com.intellij.idea.IdeaApplication; @@ -100,31 +101,44 @@ public class PluginManager extends PluginManagerCore { public static void processException(Throwable t) { if (!IdeaApplication.isLoaded()) { - @SuppressWarnings("ThrowableResultOfMethodCallIgnored") StartupAbortedException se = findCause(t); + @SuppressWarnings("ThrowableResultOfMethodCallIgnored") StartupAbortedException se = findCause(t, StartupAbortedException.class); if (se == null) se = new StartupAbortedException(t); + @SuppressWarnings("ThrowableResultOfMethodCallIgnored") PluginException pe = findCause(t, PluginException.class); + PluginId pluginId = pe != null ? pe.getPluginId() : null; - if (se.logError()) { + if (Logger.isInitialized() && !(t instanceof ProcessCanceledException)) { try { - if (Logger.isInitialized() && !(t instanceof ProcessCanceledException)) { - getLogger().error(t); - } + getLogger().error(t); } catch (Throwable ignore) { } + } + + if (pluginId != null && !CORE_PLUGIN_ID.equals(pluginId.getIdString())) { + disablePlugin(pluginId.getIdString()); + + StringWriter message = new StringWriter(); + message.append("Plugin '").append(pluginId.getIdString()).append("' failed to initialize and will be disabled. "); + message.append(" Please restart ").append(ApplicationNamesInfo.getInstance().getFullProductName()).append('.'); + message.append("\n\n"); + pe.getCause().printStackTrace(new PrintWriter(message)); + Main.showMessage("Plugin Error", message.toString(), false); + System.exit(Main.PLUGIN_ERROR); + } + else { Main.showMessage("Start Failed", t); + System.exit(se.exitCode()); } - - System.exit(se.exitCode()); } else if (!(t instanceof ProcessCanceledException)) { getLogger().error(t); } } - private static StartupAbortedException findCause(Throwable t) { + private static <T extends Throwable> T findCause(Throwable t, Class<T> clazz) { while (t != null) { - if (t instanceof StartupAbortedException) { - return (StartupAbortedException)t; + if (clazz.isInstance(t)) { + return clazz.cast(t); } t = t.getCause(); } @@ -229,18 +243,7 @@ public class PluginManager extends PluginManagerCore { } if (pluginId != null && !CORE_PLUGIN_ID.equals(pluginId.getIdString())) { - getLogger().warn(t); - - disablePlugin(pluginId.getIdString()); - - StringWriter message = new StringWriter(); - message.append("Plugin '").append(pluginId.getIdString()).append("' failed to initialize and will be disabled. "); - message.append(" Please restart ").append(ApplicationNamesInfo.getInstance().getFullProductName()).append('.'); - message.append("\n\n"); - t.printStackTrace(new PrintWriter(message)); - Main.showMessage("Plugin Error", message.toString(), false); - - throw new StartupAbortedException(t).exitCode(Main.PLUGIN_ERROR).logError(false); + throw new StartupAbortedException(new PluginException(t, pluginId)); } else { throw new StartupAbortedException("Fatal error initializing '" + componentClassName + "'", t); @@ -249,7 +252,6 @@ public class PluginManager extends PluginManagerCore { private static class StartupAbortedException extends RuntimeException { private int exitCode = Main.STARTUP_EXCEPTION; - private boolean logError = true; public StartupAbortedException(Throwable cause) { super(cause); @@ -267,14 +269,5 @@ public class PluginManager extends PluginManagerCore { this.exitCode = exitCode; return this; } - - public boolean logError() { - return logError; - } - - public StartupAbortedException logError(boolean logError) { - this.logError = logError; - return this; - } } } |