From be701dfd6c3a65c427b53b267b542666e92dee8c Mon Sep 17 00:00:00 2001 From: Oleg Shpynov Date: Tue, 22 Sep 2009 17:03:19 +0400 Subject: [PATCH] =?UTF-8?q?RUBY-3844:=20Alt=C3=A2=E2=82=AC=E2=80=B9-=C3=A2?= =?UTF-8?q?=E2=82=AC=E2=80=B9F2=20should=20work=20inside=20controller=20ac?= =?UTF-8?q?tion=20methods?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ide/browsers/HtmlWebBrowserUrlProvider.java | 10 ++++++++-- .../intellij/ide/browsers/WebBrowserUrlProvider.java | 12 +++++++++--- .../ide/browsers/WebBrowserUrlProviders.java | 8 ++++---- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/xml/impl/src/com/intellij/ide/browsers/HtmlWebBrowserUrlProvider.java b/xml/impl/src/com/intellij/ide/browsers/HtmlWebBrowserUrlProvider.java index e40967af201b..bd511a81266a 100644 --- a/xml/impl/src/com/intellij/ide/browsers/HtmlWebBrowserUrlProvider.java +++ b/xml/impl/src/com/intellij/ide/browsers/HtmlWebBrowserUrlProvider.java @@ -5,6 +5,7 @@ import com.intellij.lang.html.HTMLLanguage; import com.intellij.lang.xhtml.XHTMLLanguage; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; @@ -15,14 +16,19 @@ public class HtmlWebBrowserUrlProvider extends WebBrowserUrlProvider { private static final Logger LOG = Logger.getInstance("#com.intellij.ide.browsers.HtmlWebBrowserUrlProvider"); @NotNull - public String getUrl(@NotNull final PsiFile file, final boolean shiftDown) throws Exception { + public String getUrl(@NotNull final PsiElement element, final boolean shiftDown) throws Exception { + final PsiFile file = element instanceof PsiFile ? (PsiFile) element : element.getContainingFile(); final VirtualFile virtualFile = file.getVirtualFile(); LOG.assertTrue(virtualFile != null); return virtualFile.getUrl(); } @Override - public boolean canHandleFile(@NotNull final PsiFile file) { + public boolean canHandleElement(@NotNull final PsiElement element) { + final PsiFile file = element instanceof PsiFile ? (PsiFile) element : element.getContainingFile(); + if (file == null){ + return false; + } final Language language = file.getViewProvider().getBaseLanguage(); return HTMLLanguage.INSTANCE == language || XHTMLLanguage.INSTANCE == language; } diff --git a/xml/openapi/src/com/intellij/ide/browsers/WebBrowserUrlProvider.java b/xml/openapi/src/com/intellij/ide/browsers/WebBrowserUrlProvider.java index af090ca38cb6..80b56ff9c1c5 100644 --- a/xml/openapi/src/com/intellij/ide/browsers/WebBrowserUrlProvider.java +++ b/xml/openapi/src/com/intellij/ide/browsers/WebBrowserUrlProvider.java @@ -1,7 +1,7 @@ package com.intellij.ide.browsers; -import com.intellij.psi.PsiFile; import com.intellij.openapi.extensions.ExtensionPointName; +import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; /** @@ -19,8 +19,14 @@ public abstract class WebBrowserUrlProvider { } } + /** + * Invariant: element has not null containing psi file with not null virtual file + */ @NotNull - public abstract String getUrl(@NotNull PsiFile file, boolean shiftDown) throws Exception; + public abstract String getUrl(@NotNull PsiElement element, boolean shiftDown) throws Exception; - public abstract boolean canHandleFile(@NotNull final PsiFile file); + /** + * Invariant: element has not null containing psi file with not null virtual file + */ + public abstract boolean canHandleElement(@NotNull final PsiElement element); } diff --git a/xml/openapi/src/com/intellij/ide/browsers/WebBrowserUrlProviders.java b/xml/openapi/src/com/intellij/ide/browsers/WebBrowserUrlProviders.java index c737b65c8328..6ddebfacb78d 100644 --- a/xml/openapi/src/com/intellij/ide/browsers/WebBrowserUrlProviders.java +++ b/xml/openapi/src/com/intellij/ide/browsers/WebBrowserUrlProviders.java @@ -1,6 +1,6 @@ package com.intellij.ide.browsers; -import com.intellij.psi.PsiFile; +import com.intellij.psi.PsiElement; import org.jetbrains.annotations.Nullable; /** @@ -11,14 +11,14 @@ public class WebBrowserUrlProviders { } @Nullable - public static WebBrowserUrlProvider getProvider(@Nullable PsiFile file) { - if (file == null) { + public static WebBrowserUrlProvider getProvider(@Nullable PsiElement element) { + if (element == null) { return null; } final WebBrowserUrlProvider[] urlProviders = WebBrowserUrlProvider.EP_NAME.getExtensions(); for (WebBrowserUrlProvider urlProvider : urlProviders) { - if (urlProvider.canHandleFile(file)) { + if (urlProvider.canHandleElement(element)) { return urlProvider; } }