Search in sources :

Example 16 with JSClass

use of com.intellij.lang.javascript.psi.ecmal4.JSClass in project intellij-plugins by JetBrains.

the class CreateFlexSkinIntention method appendSkinStates.

private static void appendSkinStates(final Collection<String> skinStates, final JSClass jsClass, final Set<JSClass> visited) {
    visited.add(jsClass);
    final JSAttributeList attributeList = jsClass.getAttributeList();
    if (attributeList != null) {
        final JSAttribute[] attributes = attributeList.getAttributesByName("SkinState");
        for (final JSAttribute attribute : attributes) {
            final JSAttributeNameValuePair pair = attribute.getValueByName(null);
            if (pair != null) {
                final String state = pair.getSimpleValue();
                if (!skinStates.contains(state)) {
                    skinStates.add(state);
                }
            }
        }
    }
    for (final JSClass superClass : jsClass.getSuperClasses()) {
        if (!visited.contains(superClass)) {
            appendSkinStates(skinStates, superClass, visited);
        }
    }
}
Also used : JSAttributeList(com.intellij.lang.javascript.psi.ecmal4.JSAttributeList) JSAttribute(com.intellij.lang.javascript.psi.ecmal4.JSAttribute) JSAttributeNameValuePair(com.intellij.lang.javascript.psi.ecmal4.JSAttributeNameValuePair) JSClass(com.intellij.lang.javascript.psi.ecmal4.JSClass)

Example 17 with JSClass

use of com.intellij.lang.javascript.psi.ecmal4.JSClass in project intellij-plugins by JetBrains.

the class AngularJS2IndexingHandler method determineModuleName.

private static String determineModuleName(@NotNull JSCallExpression callExpression) {
    if (!(callExpression.getParent() instanceof ES6Decorator))
        return null;
    final ES6Decorator decorator = (ES6Decorator) callExpression.getParent();
    final PsiElement owner = decorator.getOwner();
    if (owner instanceof JSClass)
        return ((JSClass) owner).getName();
    return null;
}
Also used : ES6Decorator(com.intellij.lang.javascript.psi.ecma6.ES6Decorator) JSClass(com.intellij.lang.javascript.psi.ecmal4.JSClass) PsiElement(com.intellij.psi.PsiElement)

Example 18 with JSClass

use of com.intellij.lang.javascript.psi.ecmal4.JSClass in project intellij-plugins by JetBrains.

the class AngularJS2IndexingHandler method isTemplate.

private static boolean isTemplate(PsiElement decorator) {
    final JSClass clazz = PsiTreeUtil.getParentOfType(decorator, JSClass.class);
    if (clazz != null) {
        final JSFunction constructor = clazz.getConstructor();
        final JSParameterList params = constructor != null ? constructor.getParameterList() : null;
        return params != null && params.getText().contains(TEMPLATE_REF);
    }
    final PsiElement parent = decorator.getParent();
    if (parent instanceof JSArrayLiteralExpression) {
        final JSCallExpression metadata = PsiTreeUtil.getNextSiblingOfType(decorator, JSCallExpression.class);
        return hasTemplateRef(metadata);
    }
    if (parent instanceof JSObjectLiteralExpression) {
        JSQualifiedName namespace = getCompiledDecoratorNamespace(parent);
        if (namespace == null)
            return false;
        final JSBlockStatement block = PsiTreeUtil.getParentOfType(parent, JSBlockStatement.class);
        final JSFile file = block == null ? PsiTreeUtil.getParentOfType(parent, JSFile.class) : null;
        final JSSourceElement[] statements = block != null ? block.getStatements() : file != null ? file.getStatements() : JSStatement.EMPTY;
        for (JSSourceElement statement : statements) {
            if (statement instanceof JSExpressionStatement) {
                final JSExpression expression = ((JSExpressionStatement) statement).getExpression();
                if (expression instanceof JSAssignmentExpression) {
                    final JSDefinitionExpression def = ((JSAssignmentExpression) expression).getDefinitionExpression();
                    if (def != null && "ctorParameters".equals(def.getName()) && namespace.equals(def.getJSNamespace().getQualifiedName())) {
                        return hasTemplateRef(expression) || PsiTreeUtil.hasErrorElements(expression) && !DialectDetector.isES6(expression) && hasTemplateRef(PsiTreeUtil.getNextSiblingOfType(statement, JSExpressionStatement.class));
                    }
                }
            }
        }
    }
    return false;
}
Also used : JSClass(com.intellij.lang.javascript.psi.ecmal4.JSClass) PsiElement(com.intellij.psi.PsiElement)

Example 19 with JSClass

use of com.intellij.lang.javascript.psi.ecmal4.JSClass in project intellij-plugins by JetBrains.

the class FlexHighlightingTest method testFxPrivate.

@JSTestOptions({ JSTestOption.WithFlexFacet, JSTestOption.WithGumboSdk })
public void testFxPrivate() throws Exception {
    doTestFor(true, getTestName(false) + ".mxml");
    final JSClassResolver resolver = JSDialectSpecificHandlersFactory.forLanguage(JavaScriptSupportLoader.ECMA_SCRIPT_L4).getClassResolver();
    final JSClass jsClass = (JSClass) resolver.findClassByQName("mx.controls.CheckBox", GlobalSearchScope.moduleWithLibrariesScope(myModule));
    final Collection<PsiReference> usages = ReferencesSearch.search(jsClass, GlobalSearchScope.moduleScope(myModule)).findAll();
    assertEquals(1, usages.size());
}
Also used : JSClassResolver(com.intellij.lang.javascript.psi.resolve.JSClassResolver) JSClass(com.intellij.lang.javascript.psi.ecmal4.JSClass)

Example 20 with JSClass

use of com.intellij.lang.javascript.psi.ecmal4.JSClass in project intellij-plugins by JetBrains.

the class ActionScriptHighlightingTest method invokeActionWithCheck.

private PsiElement invokeActionWithCheck(@NonNls String destinationClassName, @NonNls final String actionName) {
    PlatformTestUtil.invokeNamedAction(actionName);
    final PsiElement at = myFile.findElementAt(myEditor.getCaretModel().getOffset());
    JSClass clazz = PsiTreeUtil.getParentOfType(at, JSClass.class);
    assertEquals(destinationClassName, clazz.getName());
    return at;
}
Also used : JSClass(com.intellij.lang.javascript.psi.ecmal4.JSClass)

Aggregations

JSClass (com.intellij.lang.javascript.psi.ecmal4.JSClass)141 PsiElement (com.intellij.psi.PsiElement)65 Nullable (org.jetbrains.annotations.Nullable)27 MxmlJSClass (com.intellij.javascript.flex.mxml.MxmlJSClass)23 NotNull (org.jetbrains.annotations.NotNull)23 VirtualFile (com.intellij.openapi.vfs.VirtualFile)22 GlobalSearchScope (com.intellij.psi.search.GlobalSearchScope)22 JSFunction (com.intellij.lang.javascript.psi.JSFunction)18 JSAttributeList (com.intellij.lang.javascript.psi.ecmal4.JSAttributeList)18 Module (com.intellij.openapi.module.Module)17 XmlFile (com.intellij.psi.xml.XmlFile)17 Project (com.intellij.openapi.project.Project)16 PsiFile (com.intellij.psi.PsiFile)16 JSQualifiedNamedElement (com.intellij.lang.javascript.psi.ecmal4.JSQualifiedNamedElement)15 ArrayList (java.util.ArrayList)14 PsiDirectory (com.intellij.psi.PsiDirectory)11 XmlTag (com.intellij.psi.xml.XmlTag)11 JSReferenceExpression (com.intellij.lang.javascript.psi.JSReferenceExpression)8 XmlElementDescriptor (com.intellij.xml.XmlElementDescriptor)8 XmlBackedJSClassImpl (com.intellij.lang.javascript.flex.XmlBackedJSClassImpl)7