diff options
Diffstat (limited to 'xml/impl/src/com/intellij/ide')
5 files changed, 27 insertions, 15 deletions
diff --git a/xml/impl/src/com/intellij/ide/browsers/BrowserLauncherImpl.java b/xml/impl/src/com/intellij/ide/browsers/BrowserLauncherImpl.java index 4f7f4efa5085..65da7b30722c 100644 --- a/xml/impl/src/com/intellij/ide/browsers/BrowserLauncherImpl.java +++ b/xml/impl/src/com/intellij/ide/browsers/BrowserLauncherImpl.java @@ -24,6 +24,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.options.ShowSettingsUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; +import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.text.StringUtil; import com.intellij.ui.AppUIUtil; import com.intellij.util.ArrayUtil; @@ -38,7 +39,7 @@ final class BrowserLauncherImpl extends BrowserLauncherAppless { @Override protected void browseUsingNotSystemDefaultBrowserPolicy(@NotNull URI uri, @NotNull GeneralSettings settings, @Nullable Project project) { WebBrowserManager browserManager = WebBrowserManager.getInstance(); - if (browserManager.getDefaultBrowserPolicy() == DefaultBrowserPolicy.FIRST) { + if (browserManager.getDefaultBrowserPolicy() == DefaultBrowserPolicy.FIRST || (SystemInfo.isMac && "open".equals(settings.getBrowserPath()))) { WebBrowser browser = browserManager.getFirstActiveBrowser(); if (browser != null) { browseUsingPath(uri.toString(), null, browser, project, ArrayUtil.EMPTY_STRING_ARRAY); @@ -50,7 +51,11 @@ final class BrowserLauncherImpl extends BrowserLauncherAppless { } @Override - protected void doShowError(@Nullable final String error, @Nullable final WebBrowser browser, @Nullable final Project project, final String title, @Nullable final Runnable launchTask) { + protected void showError(@Nullable final String error, + @Nullable final WebBrowser browser, + @Nullable final Project project, + final String title, + @Nullable final Runnable launchTask) { AppUIUtil.invokeOnEdt(new Runnable() { @Override public void run() { @@ -85,7 +90,7 @@ final class BrowserLauncherImpl extends BrowserLauncherAppless { public void run() { try { if (process.waitFor() == 1) { - doShowError(ExecUtil.readFirstLine(process.getErrorStream(), null), browser, project, null, launchTask); + showError(ExecUtil.readFirstLine(process.getErrorStream(), null), browser, project, null, launchTask); } } catch (InterruptedException ignored) { diff --git a/xml/impl/src/com/intellij/ide/browsers/BrowserStarter.java b/xml/impl/src/com/intellij/ide/browsers/BrowserStarter.java index 8e3f014ea5af..ca6726926d6f 100644 --- a/xml/impl/src/com/intellij/ide/browsers/BrowserStarter.java +++ b/xml/impl/src/com/intellij/ide/browsers/BrowserStarter.java @@ -21,12 +21,12 @@ public class BrowserStarter { private static final Logger LOG = Logger.getInstance(BrowserStarter.class); private final StartBrowserSettings mySettings; - private final RunConfiguration myNodeRunConfiguration; + private final RunConfiguration myRunConfiguration; private final ProcessHandler myServerProcessHandler; public BrowserStarter(@NotNull RunConfiguration runConfiguration, @NotNull StartBrowserSettings settings, @NotNull ProcessHandler serverProcessHandler) { mySettings = settings; - myNodeRunConfiguration = runConfiguration; + myRunConfiguration = runConfiguration; myServerProcessHandler = serverProcessHandler; } @@ -102,7 +102,7 @@ public class BrowserStarter { private void openPageNow() { if (!isProcessTerminated()) { - JavaScriptDebuggerStarter.Util.startDebugOrLaunchBrowser(myNodeRunConfiguration, mySettings); + JavaScriptDebuggerStarter.Util.startDebugOrLaunchBrowser(myRunConfiguration, mySettings); } } diff --git a/xml/impl/src/com/intellij/ide/browsers/JavaScriptDebuggerStarter.java b/xml/impl/src/com/intellij/ide/browsers/JavaScriptDebuggerStarter.java index cbc8cb111557..71dbb0c0dd71 100644 --- a/xml/impl/src/com/intellij/ide/browsers/JavaScriptDebuggerStarter.java +++ b/xml/impl/src/com/intellij/ide/browsers/JavaScriptDebuggerStarter.java @@ -12,8 +12,7 @@ import org.jetbrains.annotations.Nullable; public interface JavaScriptDebuggerStarter<RC extends RunConfiguration, U> { boolean isApplicable(@NotNull RunConfiguration runConfiguration); - // todo we must pass browser family, otherwise result could be unexpected (by default Chrome will be used, but user can prefer Firefox) - void start(@NotNull String url, @NotNull RC runConfiguration, @NotNull U userData); + void start(@NotNull String url, @NotNull RC runConfiguration, @NotNull U userData, @Nullable WebBrowser browser); final class Util { static final ExtensionPointName<JavaScriptDebuggerStarter> EP_NAME = ExtensionPointName.create("org.jetbrains.javaScriptDebuggerStarter"); @@ -31,11 +30,15 @@ public interface JavaScriptDebuggerStarter<RC extends RunConfiguration, U> { } public static <RC extends RunConfiguration> boolean start(@NotNull RC runConfiguration, @NotNull String url) { + return start(runConfiguration, url, null); + } + + public static <RC extends RunConfiguration> boolean start(@NotNull RC runConfiguration, @NotNull String url, @Nullable WebBrowser browser) { JavaScriptDebuggerStarter<RC, Object> starter = get(runConfiguration); if (starter == null) { return false; } - starter.start(url, runConfiguration, NULL_OBJECT); + starter.start(url, runConfiguration, NULL_OBJECT, browser); return true; } @@ -49,9 +52,13 @@ public interface JavaScriptDebuggerStarter<RC extends RunConfiguration, U> { @NotNull String url, @Nullable WebBrowser browser, boolean startDebugger) { - if (!startDebugger || !start(runConfiguration, url)) { + if (!startDebugger || !start(runConfiguration, url, browser)) { BrowserLauncher.getInstance().browse(url, browser, runConfiguration.getProject()); } } + + public static boolean hasStarters() { + return EP_NAME.getExtensions().length > 0; + } } } diff --git a/xml/impl/src/com/intellij/ide/browsers/OpenUrlHyperlinkInfo.java b/xml/impl/src/com/intellij/ide/browsers/OpenUrlHyperlinkInfo.java index e6bd32729b13..b634fd2fc8b1 100644 --- a/xml/impl/src/com/intellij/ide/browsers/OpenUrlHyperlinkInfo.java +++ b/xml/impl/src/com/intellij/ide/browsers/OpenUrlHyperlinkInfo.java @@ -40,15 +40,15 @@ public final class OpenUrlHyperlinkInfo implements HyperlinkWithPopupMenuInfo { this(url, Conditions.<WebBrowser>alwaysTrue(), null); } - public OpenUrlHyperlinkInfo(@NotNull String url, @Nullable WebBrowser browser) { - this(url, null, browser); + public OpenUrlHyperlinkInfo(@NotNull String url, @Nullable final WebBrowser browser) { + this(url, browser == null ? Conditions.<WebBrowser>alwaysTrue() : Conditions.is(browser)); } public OpenUrlHyperlinkInfo(@NotNull String url, @NotNull Condition<WebBrowser> browserCondition) { this(url, browserCondition, null); } - private OpenUrlHyperlinkInfo(@NotNull String url, @Nullable Condition<WebBrowser> browserCondition, @Nullable WebBrowser browser) { + private OpenUrlHyperlinkInfo(@NotNull String url, @NotNull Condition<WebBrowser> browserCondition, @Nullable WebBrowser browser) { this.url = url; this.browserCondition = browserCondition; this.browser = browser; @@ -58,7 +58,7 @@ public final class OpenUrlHyperlinkInfo implements HyperlinkWithPopupMenuInfo { public ActionGroup getPopupMenuGroup(@NotNull MouseEvent event) { DefaultActionGroup group = new DefaultActionGroup(); for (final WebBrowser browser : WebBrowserManager.getInstance().getActiveBrowsers()) { - if (browserCondition == null ? (this.browser == null || browser.equals(this.browser)) : browserCondition.value(browser)) { + if (browserCondition.value(browser)) { group.add(new AnAction("Open in " + browser.getName(), "Open URL in " + browser.getName(), browser.getIcon()) { @Override public void actionPerformed(AnActionEvent e) { diff --git a/xml/impl/src/com/intellij/ide/browsers/StartBrowserPanel.java b/xml/impl/src/com/intellij/ide/browsers/StartBrowserPanel.java index 603746bb3c60..a0faad5a0eb5 100644 --- a/xml/impl/src/com/intellij/ide/browsers/StartBrowserPanel.java +++ b/xml/impl/src/com/intellij/ide/browsers/StartBrowserPanel.java @@ -59,7 +59,7 @@ public class StartBrowserPanel { private JPanel myRoot; public StartBrowserPanel() { - myStartJavaScriptDebuggerCheckBox.setVisible(JavaScriptDebuggerStarter.Util.EP_NAME.getExtensions().length > 0); + myStartJavaScriptDebuggerCheckBox.setVisible(JavaScriptDebuggerStarter.Util.hasStarters()); myRoot.addAncestorListener(new AncestorListenerAdapter() { @Override public void ancestorAdded(AncestorEvent event) { |