From 54439eff5a5c86a51fa6335cd48a9fc061f3a5a2 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Sun, 16 Mar 2014 09:20:53 +0100 Subject: [PATCH 1/6] EA-53722 --- .../actions/BaseOpenInBrowserAction.java | 42 ++++--------------- 1 file changed, 7 insertions(+), 35 deletions(-) diff --git a/xml/impl/src/com/intellij/ide/browsers/actions/BaseOpenInBrowserAction.java b/xml/impl/src/com/intellij/ide/browsers/actions/BaseOpenInBrowserAction.java index ac6b476cb97e..b01bcdfd9b52 100644 --- a/xml/impl/src/com/intellij/ide/browsers/actions/BaseOpenInBrowserAction.java +++ b/xml/impl/src/com/intellij/ide/browsers/actions/BaseOpenInBrowserAction.java @@ -132,43 +132,15 @@ public abstract class BaseOpenInBrowserAction extends DumbAwareAction { } } else { - final PsiFile psiFile = CommonDataKeys.PSI_FILE.getData(context); - if (psiFile != null) { - return OpenInBrowserRequest.create(psiFile); + PsiFile psiFile = CommonDataKeys.PSI_FILE.getData(context); + VirtualFile virtualFile = CommonDataKeys.VIRTUAL_FILE.getData(context); + Project project = CommonDataKeys.PROJECT.getData(context); + if (virtualFile != null && !virtualFile.isDirectory() && virtualFile.isValid() && project != null && project.isInitialized()) { + psiFile = PsiManager.getInstance(project).findFile(virtualFile); } - final VirtualFile virtualFile = CommonDataKeys.VIRTUAL_FILE.getData(context); - final Project project = CommonDataKeys.PROJECT.getData(context); - if (virtualFile != null && !virtualFile.isDirectory() && virtualFile.isValid() && project != null && project.isInitialized()) { - return new OpenInBrowserRequest() { - @NotNull - @Override - public VirtualFile getVirtualFile() { - return virtualFile; - } - - @NotNull - @Override - public Project getProject() { - return project; - } - - @NotNull - @Override - public PsiElement getElement() { - return getFile(); - } - - @NotNull - @Override - public PsiFile getFile() { - if (file == null) { - file = PsiManager.getInstance(getProject()).findFile(virtualFile); - LOG.assertTrue(file != null, virtualFile.getPath()); - } - return file; - } - }; + if (psiFile != null) { + return OpenInBrowserRequest.create(psiFile); } } return null; From 0d8b9ae1dcb538253785c990474d46e299ba32e6 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Sun, 16 Mar 2014 09:57:36 +0100 Subject: [PATCH 2/6] deprecate unused method --- .../src/com/intellij/execution/console/LanguageConsoleImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java b/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java index 5b88d7c739a3..c15e00acfbf3 100644 --- a/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java @@ -322,6 +322,7 @@ public class LanguageConsoleImpl implements Disposable, TypeSafeDataProvider { @SuppressWarnings("UnusedDeclaration") @NotNull + @Deprecated public LightVirtualFile getHistoryFile() { return myHistoryFile; } From 2ecb8b15be377e0a462b68f305ebfec87fc3d50b Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Sun, 16 Mar 2014 13:05:26 +0100 Subject: [PATCH 3/6] init WEB-7303 WebStorm: Add support for debugging with node-webkit. --- .../ide/browsers/StartBrowserPanel.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/xml/impl/src/com/intellij/ide/browsers/StartBrowserPanel.java b/xml/impl/src/com/intellij/ide/browsers/StartBrowserPanel.java index da9898207e9a..fc209b7af3e1 100644 --- a/xml/impl/src/com/intellij/ide/browsers/StartBrowserPanel.java +++ b/xml/impl/src/com/intellij/ide/browsers/StartBrowserPanel.java @@ -12,6 +12,7 @@ import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.ui.TextBrowseFolderListener; import com.intellij.openapi.ui.TextFieldWithBrowseButton; +import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; @@ -58,12 +59,12 @@ public class StartBrowserPanel { // IDEA-118202 project = ProjectManager.getInstance().getDefaultProject(); } - setupUrlField(myUrlField, project); + setupUrlField(myUrlField, project, false, null); } }); } else { - setupUrlField(myUrlField, project); + setupUrlField(myUrlField, project, false, null); } } }); @@ -119,7 +120,7 @@ public class StartBrowserPanel { } @Nullable - private static Url virtualFileToUrl(VirtualFile file, Project project) { + private static Url virtualFileToUrl(@NotNull VirtualFile file, @NotNull Project project) { PsiFile psiFile; AccessToken token = ReadAction.start(); try { @@ -141,10 +142,16 @@ public class StartBrowserPanel { return browserSettings; } - public static void setupUrlField(@NotNull TextFieldWithBrowseButton field, @NotNull final Project project) { - FileChooserDescriptor descriptor = new FileChooserDescriptor(true, false, false, false, false, false) { + public static void setupUrlField(@NotNull TextFieldWithBrowseButton field, + @NotNull final Project project, + boolean chooseFolders, + @Nullable final Condition additionalFileCondition) { + FileChooserDescriptor descriptor = new FileChooserDescriptor(true, chooseFolders, false, false, false, false) { @Override public boolean isFileSelectable(VirtualFile file) { + if (additionalFileCondition != null && additionalFileCondition.value(file)) { + return true; + } return HtmlUtil.isHtmlFile(file) || virtualFileToUrl(file, project) != null; } }; @@ -157,6 +164,10 @@ public class StartBrowserPanel { @NotNull @Override protected String chosenFileToResultingText(@NotNull VirtualFile chosenFile) { + if (chosenFile.isDirectory()) { + return chosenFile.getPath(); + } + Url url = virtualFileToUrl(chosenFile, project); return url == null ? chosenFile.getUrl() : url.toDecodedForm(); } From 60f6491cc52cd435d8340e3ffa2cd1499760dec7 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Sun, 16 Mar 2014 15:18:26 +0100 Subject: [PATCH 4/6] =?UTF-8?q?prepare=20to=20fix=20WEB-7303=20=E2=80=94?= =?UTF-8?q?=20reduce=20dependency=20on=20ExtBackedChromeConnection,=20add?= =?UTF-8?q?=20node-webkit=20icons?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../icons/src/xml/browsers/node-webkit16.png | Bin 0 -> 734 bytes .../icons/src/xml/browsers/node-webkit16@2x.png | Bin 0 -> 5043 bytes .../intellij/ide/browsers/BrowserLauncher.java | 2 +- .../ide/browsers/BrowserLauncherAppless.java | 9 ++++----- .../util/src/com/intellij/icons/AllIcons.java | 1 + .../ide/browsers/ConfigurableWebBrowser.java | 12 +++++++++++- 6 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 platform/icons/src/xml/browsers/node-webkit16.png create mode 100644 platform/icons/src/xml/browsers/node-webkit16@2x.png diff --git a/platform/icons/src/xml/browsers/node-webkit16.png b/platform/icons/src/xml/browsers/node-webkit16.png new file mode 100644 index 0000000000000000000000000000000000000000..a0cd4dad8829b011cdea169e1759b9db1bd21b96 GIT binary patch literal 734 zcmV<40wMj0P)B~%Xsxu35p5fJS&GH7Nn3d-(Nr%= zB=K=*3`Rgt5)w%yUN9jsfrI`D98J9F;p=P`DK4I-}!##H#;*mHTyIGM^@L? z^Q)`tle@b(T654wjE6QhHqXt@mOga_qv#6uVS4)h)`#~WgG8(Sr+H`RE48rj;&opv z0ZtI%@kikmW3W0!M55O)KmYXY_VyQck8yEv@kF`&>dwI6=r^Oe6%6M?Z)^mKp-H5M zrx1>(VdniXumX~)k?+r+zbp~Y$tqxOu5`Dn`y%R_44_OdxH@_fy_&^%;SqAh$A~9# z@N|YivkufZv*-+jFf()SK@}iL#TD8lK+gzZxpwev0r&zjbca*u2`A7ghGF+#MpJMa z3ZWkq<3Khmy{Q87`KcwNS%8kVgEqHSAhg*H+UkSWJBU-UWgPF{M4d1Mjot#<#Za>G-_B_Y;Gje1!xDhaM<$>b8v&6%0kqIIvPfp73P>hzJn0F= z(V%A0q_sd};K^QjQnHP#Y=fHQ@|cSJ9~p9?H;zPN_*oU;aI~Kt8=EMnu8;n7xctP( z!C>hC!=DH1=mte{xdNVOWX_LFW}?h-F2$Z3Ig!0BNYc#OC30;Ua+DfcfY#Uwqs3FX z%Ca^-UUdHNJ=IFmR49>3fA;x%AcvgGW3qPOS1F3(u}CCYi1Z~3a=zcZUzd?sCjqFs Q-T(jq07*qoM6N<$f;re$6#xJL literal 0 HcmV?d00001 diff --git a/platform/icons/src/xml/browsers/node-webkit16@2x.png b/platform/icons/src/xml/browsers/node-webkit16@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..977b588dae4706dd655f51d9857f9a1c38d96f08 GIT binary patch literal 5043 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 0 ? path.indexOf(what, index + 1) != -1 : path.contains(what); + } + return false; } @Nullable From 1dbf9f3e11f36a7f3335b437f82dc0dc6b2a363c Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Sun, 16 Mar 2014 16:48:16 +0100 Subject: [PATCH 5/6] cleanup --- .../src/com/intellij/ide/browsers/BrowserSpecificSettings.java | 1 + 1 file changed, 1 insertion(+) diff --git a/platform/platform-api/src/com/intellij/ide/browsers/BrowserSpecificSettings.java b/platform/platform-api/src/com/intellij/ide/browsers/BrowserSpecificSettings.java index 344fe85f8d00..826ca80cd21a 100644 --- a/platform/platform-api/src/com/intellij/ide/browsers/BrowserSpecificSettings.java +++ b/platform/platform-api/src/com/intellij/ide/browsers/BrowserSpecificSettings.java @@ -30,6 +30,7 @@ public abstract class BrowserSpecificSettings implements Cloneable { return Collections.emptyList(); } + @Override public BrowserSpecificSettings clone() { try { return (BrowserSpecificSettings)super.clone(); From 29b0996338e2db164b4a8478f8c53ed9623c7ad7 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Sun, 16 Mar 2014 21:14:00 +0100 Subject: [PATCH 6/6] cleanup --- .../src/com/intellij/execution/DefaultExecutionResult.java | 3 ++- .../src/com/intellij/ide/browsers/impl/DefaultUrlOpener.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/platform/lang-api/src/com/intellij/execution/DefaultExecutionResult.java b/platform/lang-api/src/com/intellij/execution/DefaultExecutionResult.java index 31b8340d8f98..8a951da7d74f 100644 --- a/platform/lang-api/src/com/intellij/execution/DefaultExecutionResult.java +++ b/platform/lang-api/src/com/intellij/execution/DefaultExecutionResult.java @@ -22,6 +22,7 @@ import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.project.DumbAware; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; @@ -42,7 +43,7 @@ public class DefaultExecutionResult implements ExecutionResult { myActions = AnAction.EMPTY_ARRAY; } - public DefaultExecutionResult(final ExecutionConsole console, @NotNull final ProcessHandler processHandler) { + public DefaultExecutionResult(@Nullable ExecutionConsole console, @NotNull final ProcessHandler processHandler) { this(console, processHandler, AnAction.EMPTY_ARRAY); } diff --git a/xml/impl/src/com/intellij/ide/browsers/impl/DefaultUrlOpener.java b/xml/impl/src/com/intellij/ide/browsers/impl/DefaultUrlOpener.java index 20c92648b097..3d5d349ebdbd 100644 --- a/xml/impl/src/com/intellij/ide/browsers/impl/DefaultUrlOpener.java +++ b/xml/impl/src/com/intellij/ide/browsers/impl/DefaultUrlOpener.java @@ -19,12 +19,13 @@ import com.intellij.ide.browsers.BrowserLauncher; import com.intellij.ide.browsers.UrlOpener; import com.intellij.ide.browsers.WebBrowser; import com.intellij.openapi.project.Project; +import com.intellij.util.ArrayUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; final class DefaultUrlOpener extends UrlOpener { @Override public boolean openUrl(@NotNull WebBrowser browser, @NotNull String url, @Nullable Project project) { - return BrowserLauncher.getInstance().browseUsingPath(url, null, browser, project); + return BrowserLauncher.getInstance().browseUsingPath(url, null, browser, project, ArrayUtil.EMPTY_STRING_ARRAY); } } \ No newline at end of file