diff --git a/AngularJS/AngularJS.iml b/AngularJS/AngularJS.iml index 5a0400224b..739dbbb28f 100644 --- a/AngularJS/AngularJS.iml +++ b/AngularJS/AngularJS.iml @@ -5,7 +5,7 @@ - + diff --git a/AngularJS/resources/META-INF/plugin.xml b/AngularJS/resources/META-INF/plugin.xml index f198dcad62..bb9aeeaefd 100644 --- a/AngularJS/resources/META-INF/plugin.xml +++ b/AngularJS/resources/META-INF/plugin.xml @@ -46,10 +46,7 @@ - - org.angularjs.intentions.OpenAngularJSDocsIntention - HTML - + @@ -60,6 +57,7 @@ + diff --git a/AngularJS/resources/intentionDescriptions/OpenAngularJSDocsIntention/after.java.template b/AngularJS/resources/intentionDescriptions/OpenAngularJSDocsIntention/after.java.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/AngularJS/resources/intentionDescriptions/OpenAngularJSDocsIntention/before.java.template b/AngularJS/resources/intentionDescriptions/OpenAngularJSDocsIntention/before.java.template deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/AngularJS/resources/intentionDescriptions/OpenAngularJSDocsIntention/description.html b/AngularJS/resources/intentionDescriptions/OpenAngularJSDocsIntention/description.html deleted file mode 100644 index 9bd2123634..0000000000 --- a/AngularJS/resources/intentionDescriptions/OpenAngularJSDocsIntention/description.html +++ /dev/null @@ -1,5 +0,0 @@ - - -This intention opens the docs for an AngularJS directive - - diff --git a/AngularJS/src/org/angularjs/AngularJSDocumentationProvider.java b/AngularJS/src/org/angularjs/AngularJSDocumentationProvider.java new file mode 100644 index 0000000000..41b2312067 --- /dev/null +++ b/AngularJS/src/org/angularjs/AngularJSDocumentationProvider.java @@ -0,0 +1,31 @@ +package org.angularjs; + +import com.intellij.lang.documentation.DocumentationProviderEx; +import com.intellij.lang.javascript.index.AngularDirectivesIndex; +import com.intellij.lang.javascript.index.JSNamedElementProxy; +import com.intellij.openapi.util.text.StringUtil; +import com.intellij.psi.PsiElement; +import org.angularjs.index.AngularIndexUtil; + +import java.util.Collections; +import java.util.List; + +/** + * @author Dennis.Ushakov + */ +public class AngularJSDocumentationProvider extends DocumentationProviderEx { + @Override + public List getUrlFor(PsiElement element, PsiElement originalElement) { + if (element instanceof JSNamedElementProxy) { + final String name = ((JSNamedElementProxy)element).getName(); + if (AngularIndexUtil.resolve(element.getProject(), AngularDirectivesIndex.INDEX_ID, name) != null) { + final String[] words = name.split("-"); + for (int i = 1; i < words.length; i++) { + words[i] = StringUtil.capitalize(words[i]); + } + return Collections.singletonList("http://docs.angularjs.org/api/ng.directive:" + StringUtil.join(words)); + } + } + return null; + } +} diff --git a/AngularJS/src/org/angularjs/intentions/OpenAngularJSDocsIntention.java b/AngularJS/src/org/angularjs/intentions/OpenAngularJSDocsIntention.java deleted file mode 100644 index 9e8db2e815..0000000000 --- a/AngularJS/src/org/angularjs/intentions/OpenAngularJSDocsIntention.java +++ /dev/null @@ -1,50 +0,0 @@ -package org.angularjs.intentions; - -import com.intellij.codeInsight.intention.AbstractIntentionAction; -import com.intellij.codeInsight.intention.LowPriorityAction; -import com.intellij.ide.BrowserUtil; -import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.text.StringUtil; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiFile; -import com.intellij.psi.impl.source.xml.XmlTokenImpl; -import com.intellij.psi.util.PsiUtilBase; -import com.intellij.util.IncorrectOperationException; -import org.jetbrains.annotations.NotNull; - -/** - * @author Dennis.Ushakov - */ -public class OpenAngularJSDocsIntention extends AbstractIntentionAction implements LowPriorityAction { - @NotNull - @Override - public String getText() { - return "Open Angular Docs"; - } - - @Override - public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile psiFile) { - final PsiElement element = PsiUtilBase.getElementAtCaret(editor); - - return element instanceof XmlTokenImpl && element.getText().startsWith("ng"); - } - - @Override - public void invoke(@NotNull Project project, Editor editor, PsiFile psiFile) throws IncorrectOperationException { - final PsiElement element = PsiUtilBase.getElementAtCaret(editor); - assert element != null; - String text = element.getText(); - String[] words = text.split("-"); - StringBuilder name = new StringBuilder("http://docs.angularjs.org/api/ng.directive:"); - for (String word : words) { - name.append(word.equals(words[0]) ? word : StringUtil.capitalize(word)); - } - BrowserUtil.open(name.toString()); - } - - @Override - public boolean startInWriteAction() { - return false; - } -}