Java 类com.intellij.psi.util.PsiTreeUtil 实例源码

项目:ReactPropTypes-Plugin    文件:CommonAction.java   
@NotNull
private List<PropTypeBean>  findPropsNameListWithIdentityReference(String identity, PsiElement psiElement){
  return PsiTreeUtil.findChildrenOfType(psiElement, LeafPsiElement.class)
          .stream()
          .filter(o -> o.getText().equals(identity))
          .filter(o -> o.getElementType().toString().equals("JS:IDENTIFIER"))
          .filter(o -> {
            if(o.getParent() instanceof JSReferenceExpressionImpl){
              JSReferenceExpressionImpl parent = (JSReferenceExpressionImpl) o.getParent();
              if(parent.getTreeNext()!=null && parent.getTreeNext().getElementType().toString().equals("JS:DOT")
                      &&parent.getTreeNext().getTreeNext()!=null){
                return true;
              }
            }
            return  false;
          })
          .map(o -> ((JSReferenceExpressionImpl)o.getParent()).getTreeNext().getTreeNext().getText())
          .distinct()
          .map(o -> new PropTypeBean(o,"any", false))
          .collect(Collectors.toList());
}
项目:intellij-csv-validator    文件:CsvStructureViewElement.java   
private Map<Integer, CsvColumnInfo<PsiElement>> createColumnInfoMap(CsvFile csvFile) {
    Map<Integer, CsvColumnInfo<PsiElement>> columnInfoMap = new HashMap<>();
    CsvRecord[] records = PsiTreeUtil.getChildrenOfType(csvFile, CsvRecord.class);
    int row = 0;
    for (CsvRecord record : records) {
        int column = 0;
        for (CsvField field : record.getFieldList()) {
            Integer length = field.getTextLength();
            if (!columnInfoMap.containsKey(column)) {
                columnInfoMap.put(column, new CsvColumnInfo(column, length));
            } else if (columnInfoMap.get(column).getMaxLength() < length) {
                columnInfoMap.get(column).setMaxLength(length);
            }
            columnInfoMap.get(column).addElement(field, row);
            ++column;
        }
        ++row;
    }
    return columnInfoMap;
}
项目:yii2support    文件:CompletionContributor.java   
@Override
public boolean invokeAutoPopup(@NotNull PsiElement position, char typeChar) {
    MethodReference reference = PsiTreeUtil.getParentOfType(position, MethodReference.class);
    if (reference != null && reference.getName() != null && reference.getName().equals("t") && reference.getClassReference() instanceof ClassReference) {
        ClassReference classReference = (ClassReference) reference.getClassReference();
        if (classReference == null || classReference.getName() == null || !classReference.getName().equals("Yii")) {
            return false;
        }
        if (typeChar == '\'' || typeChar == '"') {
            if (position instanceof LeafPsiElement && (position.getText().equals("$category") || position.getText().equals("$message"))) {
                return true;
            }
            if (position.getNextSibling() instanceof ParameterList) {
                return true;
            }
        }
    }

    return false;
}
项目:AppleScript-IDEA    文件:AppleScriptResolveUtil.java   
@NotNull
public static List<AppleScriptComponent> getNamedSubComponentsFor(@NotNull AppleScriptScriptObject script) {
  List<AppleScriptComponent> result = new ArrayList<>();
  AppleScriptScriptBody scriptBody = script.getScriptBody();
  AppleScriptComponent[] namedComponents = PsiTreeUtil.getChildrenOfType(scriptBody, AppleScriptComponent.class);
  AppleScriptAssignmentStatement[] varsCreations = PsiTreeUtil.getChildrenOfType(scriptBody, AppleScriptAssignmentStatement.class);
  AppleScriptVarDeclarationList[] varsDeclarations = PsiTreeUtil.getChildrenOfType(scriptBody, AppleScriptVarDeclarationList.class);

  if (namedComponents != null) {
    result.addAll(Arrays.asList(namedComponents));
  }
  if (varsCreations != null) {
    for (AppleScriptAssignmentStatement variable : varsCreations) {
      result.addAll(variable.getTargets());
    }
  }
  if (varsDeclarations != null) {
    for (AppleScriptVarDeclarationList declarationList : varsDeclarations) {
      AppleScriptComponent[] vars = PsiTreeUtil.getChildrenOfType(declarationList, AppleScriptComponent.class);
      if (vars != null) {
        result.addAll(Arrays.asList(vars));
      }
    }
  }
  return result;
}
项目:hybris-integration-intellij-idea-plugin    文件:BeansUtils.java   
public static <T extends DomElement, V> GenericAttributeValue<V> expectDomAttributeValue(
    @NotNull final PsiElement element,
    @NotNull final Class<? extends T> domTagClass,
    @NotNull final Function<T, GenericAttributeValue<V>> domGetter
) {
    final DomManager domManager = DomManager.getDomManager(element.getProject());

    if (!(element instanceof XmlElement)) {
        return null;
    }

    final XmlAttribute xmlAttribute = PsiTreeUtil.getParentOfType(element, XmlAttribute.class, false);
    if (xmlAttribute == null) {
        return null;
    }

    final XmlTag xmlParentTag = PsiTreeUtil.getParentOfType(element, XmlTag.class, false);
    DomElement domParentTag = domManager.getDomElement(xmlParentTag);

    return Optional.ofNullable(domParentTag)
                   .map(o -> ObjectUtils.tryCast(o, domTagClass))
                   .map(domGetter)
                   .filter(val -> val == domManager.getDomElement(xmlAttribute))
                   .orElse(null);
}
项目:manifold-ij    文件:ManifoldPsiClassAnnotator.java   
public static PsiClass getContainingClass( PsiElement element )
{
  final PsiClass psiClass = PsiTreeUtil.getParentOfType( element, PsiClass.class, false );
  if( psiClass == null )
  {
    final PsiFile containingFile = element.getContainingFile();
    if( containingFile instanceof PsiClassOwner )
    {
      final PsiClass[] classes = ((PsiClassOwner)containingFile).getClasses();
      if( classes.length == 1 )
      {
        return classes[0];
      }
    }
  }
  return psiClass;
}
项目:idea-php-typo3-plugin    文件:PhpLangUtil.java   
public static String getClassName(@NotNull PsiElement element) {
    ParameterList parameterList = PsiTreeUtil.getParentOfType(element, ParameterList.class);
    if (parameterList == null) {
        return null;
    }

    MethodReference methodReference = PsiTreeUtil.getParentOfType(element, MethodReference.class);
    if (methodReference == null) {
        return null;
    }

    Variable variableBeingCalledOn = PsiTreeUtil.findChildOfType(methodReference, Variable.class);
    if (variableBeingCalledOn != null && variableBeingCalledOn.getInferredType() != null) {
        PhpType inferredType = variableBeingCalledOn.getInferredType();
        return inferredType.toString();
    }

    ClassReference classReference = PsiTreeUtil.getChildOfType(methodReference, ClassReference.class);

    return extractFqnFromClassReference(methodReference, classReference);
}
项目:hybris-integration-intellij-idea-plugin    文件:ImpexHeaderItemTypeAttributeNameCompletionProvider.java   
@Nullable
@Contract("null -> null")
protected ImpexHeaderTypeName getHeaderTypeNamePsiElementOfAttribute(@Nullable final PsiElement headerAttributePsiElement) {
    if (null == headerAttributePsiElement || null == headerAttributePsiElement.getNode()) {
        return null;
    }

    final ImpexHeaderLine impexHeaderLine = PsiTreeUtil.getParentOfType(
        headerAttributePsiElement,
        ImpexHeaderLine.class
    );

    if (null == impexHeaderLine) {
        return null;
    }

    final ImpexFullHeaderType impexFullHeaderType = impexHeaderLine.getFullHeaderType();

    return null == impexFullHeaderType ? null : impexFullHeaderType.getHeaderTypeName();
}
项目:reasonml-idea-plugin    文件:DocumentationProvider.java   
@Override
public String generateDoc(PsiElement element, @Nullable PsiElement originalElement) {
    if (element instanceof PsiModuleName) {
        element = element.getParent();
        PsiElement previousElement = element == null ? null : PsiTreeUtil.prevVisibleLeaf(element);
        if (previousElement instanceof PsiComment) {
            StringBuilder sb = new StringBuilder();
            sb.append(previousElement.getText());
            return sb.toString();
        }
    }

    return super.generateDoc(element, originalElement);
}
项目:retrofit2-lint    文件:UnusedCallObjectDetector.java   
private boolean isCallResultUsed(PsiMethodCallExpression call) {
    if (hasChainedMethodCall(call)) {
        return true;
    } else if (getBoundVariable(call, true) != null) {
        // TODO: Check that variable is actually used
        return true;
    } else if (PsiTreeUtil.getParentOfType(call, PsiReturnStatement.class) != null) {
        return true;
    } else if (PsiTreeUtil.getParentOfType(call, PsiMethodCallExpression.class) != null) {
        return true;
    }
    return false;
}
项目:ReactPropTypes-Plugin    文件:CommonAction.java   
@Nullable
ES6ImportDeclaration getReactImportDeclaration(PsiFile file){
  return PsiTreeUtil.findChildrenOfType(file, ES6FromClause.class)
          .stream()
          .filter(o -> o.getText().contains("\'react\'"))
          .filter(o -> o.getParent() instanceof ES6ImportDeclaration)
          .map(o -> (ES6ImportDeclaration) o.getParent())
          .findFirst()
          .orElse(null);

}
项目:educational-plugin    文件:EduKotlinPyCharmTaskChecker.java   
@Override
protected void setProcessParameters(Project project, ApplicationConfiguration configuration, Module module, @NotNull VirtualFile testsFile) {
  configuration.setMainClassName(EduIntelliJNames.TEST_RUNNER_CLASS);
  configuration.setModule(module);
  PsiFile psiFile = PsiManager.getInstance(project).findFile(testsFile);
  Collection<KtClass> ktClasses = PsiTreeUtil.findChildrenOfType(psiFile, KtClass.class);
  for (KtClass ktClass : ktClasses) {
    String name = ktClass.getName();
    configuration.setProgramParameters(name);
  }
}
项目:AppleScript-IDEA    文件:AbstractAppleScriptHandlerCall.java   
@NotNull
@Override
protected ResolveResult[] resolveInner(boolean incompleteCode, @NotNull PsiFile containingFile) {
  final AppleScriptResolveProcessor resolveProcessor = new AppleScriptResolveProcessor(getHandlerSelector());
  PsiTreeUtil.treeWalkUp(resolveProcessor, AbstractAppleScriptHandlerCall.this, null, ResolveState.initial());
  final List<PsiElement> results = new ArrayList<>();
  results.add(resolveProcessor.getResult());
  return AppleScriptResolveUtil.toCandidateInfoArray(results);
}
项目:AppleScript-IDEA    文件:AppleScriptReferenceElementImpl.java   
@Override
public PsiElement handleElementRename(String newElementName) throws IncorrectOperationException {
  PsiElement element = this;
  final AppleScriptIdentifier identifier = PsiTreeUtil.getChildOfType(element, AppleScriptIdentifier.class);
  final AppleScriptIdentifier identifierNew = AppleScriptPsiElementFactory.createIdentifierFromText(getProject(), newElementName);
  if (identifierNew != null && identifier != null) {
    element.getNode().replaceChild(identifier.getNode(), identifierNew.getNode());
  }
  return this;
}
项目:yii2inspections    文件:TranslationKeysIndexer.java   
@NotNull
@Override
public DataIndexer<String, Void, FileContent> getIndexer() {
    return fileContent -> {
        final Map<String, Void> map = new THashMap<>();

        /* ignore file if its' structure is not as expected */
        final PhpReturn returnExpression = PsiTreeUtil.findChildOfType(fileContent.getPsiFile(), PhpReturn.class);
        final PsiElement argument        = null == returnExpression ? null : returnExpression.getArgument();
        if (!(argument instanceof ArrayCreationExpression)) {
            return map;
        }

        /* extract translations from the file */
        for (ArrayHashElement item : ((ArrayCreationExpression) argument).getHashElements()) {
            final PhpPsiElement key = item.getKey();
            if (key instanceof StringLiteralExpression) {
                final StringLiteralExpression literal = (StringLiteralExpression) key;
                final String message                  = literal.getContents();
                if (message.length() > 0) {
                    map.putIfAbsent(PhpStringUtil.unescapeText(message, literal.isSingleQuote()), null);
                }
            }
        }

        return map;
    };
}
项目:reasonml-idea-plugin    文件:PsiModuleReference.java   
@Nullable
@Override
public PsiElement resolve() {
    PsiElement parent = PsiTreeUtil.getParentOfType(myElement, PsiModule.class, PsiOpen.class);

    // If name is used in a module definition, it's already the reference
    if (parent instanceof PsiModule && ((PsiModule) parent).getNameIdentifier() == myElement) {
        return null;
    }

    Project project = myElement.getProject();

    // In open expression, name resolve to a file
    if (parent instanceof PsiOpen) {
        PsiFile file = RmlPsiUtil.findFileModule(project, m_referenceName);
        if (file != null) {
            return file;
        }
    }

    // No parent found, try to find the expression in current file
    PsiFile containingFile = myElement.getContainingFile();
    PsiModule module = ((FileBase) containingFile).getModule(m_referenceName);
    if (module != null) {
        return module.getNameIdentifier();
    }

    // No parent found, find the corresponding file
    PsiFile fileModule = RmlPsiUtil.findFileModule(project, m_referenceName);
    if (fileModule != null) {
        return fileModule;
    }

    return null;
}
项目:magento2-phpstorm-plugin    文件:ModulePackageIndex.java   
@NotNull
@Override
public DataIndexer<String, Void, FileContent> getIndexer() {
    return inputData -> {
        Map<String, Void> map = new HashMap<>();
        JsonFile jsonFile = (JsonFile)inputData.getPsiFile();
        if (!Settings.isEnabled(jsonFile.getProject())) {
            return map;
        }

        JsonObject jsonObject = PsiTreeUtil.getChildOfType(jsonFile, JsonObject.class);
        if (jsonObject == null) {
            return map;
        }
        ComposerPackageModel composerObject = new ComposerPackageModelImpl(jsonObject);

        String type = composerObject.getType();
        if (type == null) {
            return map;
        }

        if (!type.startsWith("magento2-")) {
            return map;
        }

        String name = composerObject.getName();

        if (name != null) {
            map.put(name, null);
        }

        return map;
    };
}
项目:data-mediator    文件:ConvertAction.java   
private PsiClass getPsiClassFromContext(AnActionEvent e) {
    PsiFile psiFile = e.getData(LangDataKeys.PSI_FILE);
    Editor editor = e.getData(PlatformDataKeys.EDITOR);
   // psiFile.getViewProvider().getVirtualFile()

    if (psiFile == null || editor == null) {
        return null;
    }
    int offset = editor.getCaretModel().getOffset();
    PsiElement element = psiFile.findElementAt(offset);

    return PsiTreeUtil.getParentOfType(element, PsiClass.class);
}
项目:intellij-plugin-tools    文件:BuilderClassAction.java   
private PsiClass getPsiClassFromContext(AnActionEvent e) {
    PsiFile psiFile = e.getData(LangDataKeys.PSI_FILE);
    Editor editor = e.getData(PlatformDataKeys.EDITOR);

    if (psiFile == null || editor == null) {
        return null;
    }

    int offset = editor.getCaretModel().getOffset();
    PsiElement element = psiFile.findElementAt(offset);

    return PsiTreeUtil.getParentOfType(element, PsiClass.class);
}
项目:hybris-integration-intellij-idea-plugin    文件:ImpexPsiUtils.java   
@Nullable
@Contract(pure = true)
public static PsiElement getHeaderForValueGroup(@Nullable final ImpexValueGroup valueGroup) {
    if (null == valueGroup) {
        return null;
    }

    final int columnNumber = ImpexPsiUtils.getColumnNumberForValueGroup(valueGroup);

    if (columnNumber < 0) {
        return null;
    }

    final ImpexValueLine impexValueLine = PsiTreeUtil.getParentOfType(valueGroup, ImpexValueLine.class);
    if (null == impexValueLine) {
        return null;
    }

    if (prevElementIsUserRightsMacros(impexValueLine)) {
        return null;
    }

    final ImpexHeaderLine impexHeaderLine = PsiTreeUtil.getPrevSiblingOfType(impexValueLine, ImpexHeaderLine.class);
    if (null == impexHeaderLine) {
        return null;
    }

    final ImpexFullHeaderParameter header = ImpexPsiUtils.getImpexFullHeaderParameterFromHeaderLineByNumber(
        columnNumber,
        impexHeaderLine
    );

    if (null == header) {
        return ImpexPsiUtils.getHeaderParametersSeparatorFromHeaderLineByNumber(columnNumber, impexHeaderLine);
    } else {
        return header;
    }
}
项目:reasonml-idea-plugin    文件:RmlPsiUtil.java   
@NotNull
public static List<PsiModule> findModules(@NotNull Project project) {
    ArrayList<PsiModule> result = new ArrayList<>();

    Collection<VirtualFile> virtualFiles = FilenameIndex.getAllFilesByExt(project, RmlFileType.INSTANCE.getDefaultExtension());
    for (VirtualFile virtualFile : virtualFiles) {
        PsiFile file = PsiManager.getInstance(project).findFile(virtualFile);
        PsiModule[] modules = PsiTreeUtil.getChildrenOfType(file, PsiModule.class);
        if (modules != null) {
            result.addAll(Arrays.asList(modules));
        }
    }

    return result;
}
项目:hybris-integration-intellij-idea-plugin    文件:ColumnsAlignmentStrategy.java   
@Contract(pure = true)
private boolean isStartOfValueLine(@Nullable final ASTNode currentNode) {
    return null != currentNode
           && PsiTreeUtil.findChildOfType(
        currentNode.getTreeParent().getPsi(),
        ImpexValueGroup.class
    ) == currentNode.getPsi();
}
项目:processing-idea    文件:ImportSketchClasses.java   
private void migrateColorToIntegerType(@NotNull PsiFile sketchFile, PsiElementFactory elementFactory) {
    Collection<PsiTypeElement> typeElementsInFile = PsiTreeUtil.findChildrenOfType(sketchFile, PsiTypeElement.class);

    for (PsiTypeElement typeElement : typeElementsInFile) {
        boolean isProcessingColorType = typeElement.getType().equalsToText("color");
        if (isProcessingColorType) {
            PsiTypeElement integerType = elementFactory.createTypeElementFromText("int", null);
            typeElement.replace(integerType);
        }
    }
}
项目:Goal-Intellij-Plugin    文件:ModuleTermListImpl.java   
@Override
@NotNull
public List<ModuleTerm> getTermList() {
  return PsiTreeUtil.getChildrenOfTypeAsList(this, ModuleTerm.class);
}
项目:AppleScript-IDEA    文件:AppleScriptRangeFromReferenceImpl.java   
@Override
@NotNull
public List<AppleScriptExpression> getExpressionList() {
  return PsiTreeUtil.getChildrenOfTypeAsList(this, AppleScriptExpression.class);
}
项目:AppleScript-IDEA    文件:AppleScriptConcatenationExpressionImpl.java   
@Override
@NotNull
public List<AppleScriptRelativeReference> getRelativeReferenceList() {
  return PsiTreeUtil.getChildrenOfTypeAsList(this, AppleScriptRelativeReference.class);
}
项目:AppleScript-IDEA    文件:AppleScriptBlockBodyImpl.java   
@Override
@NotNull
public List<AppleScriptExitStatement> getExitStatementList() {
  return PsiTreeUtil.getChildrenOfTypeAsList(this, AppleScriptExitStatement.class);
}
项目:hybris-integration-intellij-idea-plugin    文件:ImpexValueLineImpl.java   
@Override
@NotNull
public List<ImpexValueGroup> getValueGroupList() {
  return PsiTreeUtil.getChildrenOfTypeAsList(this, ImpexValueGroup.class);
}
项目:AppleScript-IDEA    文件:AppleScriptTargetListLiteralImpl.java   
@Override
@NotNull
public List<AppleScriptTargetVariable> getTargetVariableList() {
  return PsiTreeUtil.getChildrenOfTypeAsList(this, AppleScriptTargetVariable.class);
}
项目:AppleScript-IDEA    文件:AppleScriptMultiplicativeExpressionImpl.java   
@Override
@NotNull
public List<AppleScriptApplicationReference> getApplicationReferenceList() {
  return PsiTreeUtil.getChildrenOfTypeAsList(this, AppleScriptApplicationReference.class);
}
项目:AppleScript-IDEA    文件:AppleScriptAdditiveExpressionImpl.java   
@Override
@NotNull
public List<AppleScriptNameReference> getNameReferenceList() {
  return PsiTreeUtil.getChildrenOfTypeAsList(this, AppleScriptNameReference.class);
}
项目:AppleScript-IDEA    文件:AppleScriptHandlerPositionalParametersCallExpressionImpl.java   
@Override
@NotNull
public List<AppleScriptIgnoringStatement> getIgnoringStatementList() {
  return PsiTreeUtil.getChildrenOfTypeAsList(this, AppleScriptIgnoringStatement.class);
}
项目:AppleScript-IDEA    文件:AppleScriptCoercionExpressionImpl.java   
@Override
@NotNull
public List<AppleScriptBuiltInClassIdentifierPlural> getBuiltInClassIdentifierPluralList() {
  return PsiTreeUtil.getChildrenOfTypeAsList(this, AppleScriptBuiltInClassIdentifierPlural.class);
}
项目:Goal-Intellij-Plugin    文件:PrologDirectiveClauseImpl.java   
@Override
@NotNull
public List<PrologPredicateSpec> getPredicateSpecList() {
  return PsiTreeUtil.getChildrenOfTypeAsList(this, PrologPredicateSpec.class);
}
项目:AppleScript-IDEA    文件:AppleScriptCoercionExpressionImpl.java   
@Override
@NotNull
public List<AppleScriptIndexReferenceClassForm> getIndexReferenceClassFormList() {
  return PsiTreeUtil.getChildrenOfTypeAsList(this, AppleScriptIndexReferenceClassForm.class);
}
项目:hybris-integration-intellij-idea-plugin    文件:ImpexFullHeaderParameterImpl.java   
@Override
@NotNull
public List<ImpexModifiers> getModifiersList() {
  return PsiTreeUtil.getChildrenOfTypeAsList(this, ImpexModifiers.class);
}
项目:AppleScript-IDEA    文件:AppleScriptRangeIndexReferenceImpl.java   
@Override
@NotNull
public List<AppleScriptExpression> getExpressionList() {
  return PsiTreeUtil.getChildrenOfTypeAsList(this, AppleScriptExpression.class);
}
项目:AppleScript-IDEA    文件:AppleScriptBlockBodyImpl.java   
@Override
@NotNull
public List<AppleScriptIfSimpleStatement> getIfSimpleStatementList() {
  return PsiTreeUtil.getChildrenOfTypeAsList(this, AppleScriptIfSimpleStatement.class);
}
项目:AppleScript-IDEA    文件:AppleScriptConcatenationExpressionImpl.java   
@Override
@NotNull
public List<AppleScriptBuiltInClassIdentifierPlural> getBuiltInClassIdentifierPluralList() {
  return PsiTreeUtil.getChildrenOfTypeAsList(this, AppleScriptBuiltInClassIdentifierPlural.class);
}
项目:AppleScript-IDEA    文件:AppleScriptConcatenationExpressionImpl.java   
@Override
@NotNull
public List<AppleScriptMiddleElemReference> getMiddleElemReferenceList() {
  return PsiTreeUtil.getChildrenOfTypeAsList(this, AppleScriptMiddleElemReference.class);
}