コード例 #1
0
  private static void autoImport(final PsiFile file, int offset, final Editor editor) {
    final CharSequence text = editor.getDocument().getCharsSequence();
    while (offset > 0 && Character.isJavaIdentifierPart(text.charAt(offset))) offset--;
    if (offset <= 0) return;

    while (offset > 0 && Character.isWhitespace(text.charAt(offset))) offset--;
    if (offset <= 0 || text.charAt(offset) != '.') return;

    offset--;

    while (offset > 0 && Character.isWhitespace(text.charAt(offset))) offset--;
    if (offset <= 0) return;

    PsiJavaCodeReferenceElement element =
        extractReference(
            PsiTreeUtil.findElementOfClassAtOffset(file, offset, PsiExpression.class, false));
    if (element == null) return;

    while (true) {
      final PsiJavaCodeReferenceElement qualifier = extractReference(element.getQualifier());
      if (qualifier == null) break;

      element = qualifier;
    }
    if (!(element.getParent() instanceof PsiMethodCallExpression)
        && element.multiResolve(true).length == 0) {
      new ImportClassFix(element).doFix(editor, false, false);
    }
  }
コード例 #2
0
  private static void autoImportReference(
      @NotNull PsiFile file,
      @NotNull Editor editor,
      @Nullable PsiJavaCodeReferenceElement element) {
    if (element == null) return;

    while (true) {
      final PsiJavaCodeReferenceElement qualifier = extractReference(element.getQualifier());
      if (qualifier == null) break;

      element = qualifier;
    }
    if (!(element.getParent() instanceof PsiMethodCallExpression)
        && element.multiResolve(true).length == 0) {
      new ImportClassFix(element).doFix(editor, false, false);
      PsiDocumentManager.getInstance(file.getProject()).commitDocument(editor.getDocument());
    }
  }
コード例 #3
0
ファイル: ImportHelper.java プロジェクト: jexp/idea2
 private static void addUnresolvedImportNames(
     @NotNull Set<String> set,
     @NotNull PsiJavaFile file,
     @NotNull Set<String> namesToImportStaticly) {
   PsiImportStatementBase[] imports = file.getImportList().getAllImportStatements();
   for (PsiImportStatementBase anImport : imports) {
     PsiJavaCodeReferenceElement ref = anImport.getImportReference();
     if (ref == null) continue;
     JavaResolveResult[] results = ref.multiResolve(false);
     if (results.length == 0) {
       String text = ref.getCanonicalText();
       if (anImport.isOnDemand()) {
         text += ".*";
       }
       if (anImport instanceof PsiImportStaticStatement) {
         namesToImportStaticly.add(text);
       }
       set.add(text);
     }
   }
 }