当前位置: 首页>>代码示例>>Java>>正文


Java SourcePosition.getFile方法代码示例

本文整理汇总了Java中com.intellij.debugger.SourcePosition.getFile方法的典型用法代码示例。如果您正苦于以下问题:Java SourcePosition.getFile方法的具体用法?Java SourcePosition.getFile怎么用?Java SourcePosition.getFile使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在com.intellij.debugger.SourcePosition的用法示例。


在下文中一共展示了SourcePosition.getFile方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: getSourcePositionClassDisplayName

import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
@Nullable
public static String getSourcePositionClassDisplayName(DebugProcessImpl debugProcess, @Nullable SourcePosition position) {
  if (position == null) {
    return null;
  }
  final PsiFile positionFile = position.getFile();
  if (positionFile instanceof JspFile) {
    return positionFile.getName();
  }

  final PsiClass psiClass = getClassAt(position);

  if(psiClass != null) {
    final String qName = psiClass.getQualifiedName();
    if(qName != null) {
      return qName;
    }
  }

  if(debugProcess != null && debugProcess.isAttached()) {
    List<ReferenceType> allClasses = debugProcess.getPositionManager().getAllClasses(position);
    if(!allClasses.isEmpty()) {
      return allClasses.get(0).name();
    }
  }
  if (psiClass == null) {
    if (positionFile instanceof PsiClassOwner) {
      return positionFile.getName();
    }

    return DebuggerBundle.message("string.file.line.position", positionFile.getName(), position.getLine());
  }
  return calcClassDisplayName(psiClass);
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:35,代码来源:JVMNameUtil.java

示例2: findReferenceTypeSourceImage

import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
@Nullable
private static GroovyPsiElement findReferenceTypeSourceImage(SourcePosition position) {
  PsiFile file = position.getFile();
  if (!(file instanceof GroovyFileBase)) return null;
  PsiElement element = file.findElementAt(position.getOffset());
  if (element == null) return null;
  return PsiTreeUtil.getParentOfType(element, GrClosableBlock.class, GrTypeDefinition.class);
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:9,代码来源:GroovyPositionManager.java

示例3: findEnclosingTypeDefinition

import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
@Nullable
private static PsiClass findEnclosingTypeDefinition(SourcePosition position) {
  PsiFile file = position.getFile();
  if (!(file instanceof GroovyFileBase)) return null;
  PsiElement element = file.findElementAt(position.getOffset());
  while (true) {
    element = PsiTreeUtil.getParentOfType(element, GrTypeDefinition.class, GroovyFileBase.class);
    if (element instanceof GroovyFileBase) {
      return ((GroovyFileBase)element).getScriptClass();
    }
    else if (element instanceof GrTypeDefinition && !((GrTypeDefinition)element).isAnonymous()) {
      return (GrTypeDefinition)element;
    }
  }
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:16,代码来源:GroovyPositionManager.java

示例4: getScriptQualifiedName

import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
@Nullable
private static String getScriptQualifiedName(SourcePosition position) {
  PsiFile file = position.getFile();
  if (file instanceof GroovyFile) {
    return getScriptFQName((GroovyFile)file);
  }
  return null;
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:9,代码来源:GroovyPositionManager.java

示例5: getSourcePositionPackageDisplayName

import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
@Nullable
public static String getSourcePositionPackageDisplayName(DebugProcessImpl debugProcess, @Nullable SourcePosition position) {
  if (position == null) {
    return null;
  }
  final PsiFile positionFile = position.getFile();
  if (positionFile instanceof JspFile) {
    final PsiDirectory dir = positionFile.getContainingDirectory();
    return dir != null? dir.getVirtualFile().getPresentableUrl() : null;
  }

  final PsiClass psiClass = getClassAt(position);

  if(psiClass != null) {
    PsiClass toplevel = PsiUtil.getTopLevelClass(psiClass);
    if(toplevel != null) {
      String qName = toplevel.getQualifiedName();
      if (qName != null) {
        int i = qName.lastIndexOf('.');
        return i > 0 ? qName.substring(0, i) : "";
      }
    }
  }

  if (positionFile instanceof PsiClassOwner) {
    String name = ((PsiClassOwner)positionFile).getPackageName();
    if (!StringUtil.isEmpty(name)) {
      return name;
    }
  }

  if(debugProcess != null && debugProcess.isAttached()) {
    List<ReferenceType> allClasses = debugProcess.getPositionManager().getAllClasses(position);
    if(!allClasses.isEmpty()) {
      final String className = allClasses.get(0).name();
      int dotIndex = className.lastIndexOf('.');
      if (dotIndex >= 0) {
        return className.substring(0, dotIndex);
      }
    }
  }
  return "";
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:44,代码来源:JVMNameUtil.java

示例6: findReferencedVars

import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
private static Pair<Set<String>, Set<TextWithImports>> findReferencedVars(Set<String> visibleVars, @NotNull SourcePosition position) {
  final int line = position.getLine();
  if (line < 0) {
    return Pair.create(Collections.<String>emptySet(), Collections.<TextWithImports>emptySet());
  }
  final PsiFile positionFile = position.getFile();
  if (!positionFile.getLanguage().isKindOf(JavaLanguage.INSTANCE)) {
    return Pair.create(visibleVars, Collections.<TextWithImports>emptySet());
  }

  final VirtualFile vFile = positionFile.getVirtualFile();
  final Document doc = vFile != null ? FileDocumentManager.getInstance().getDocument(vFile) : null;
  if (doc == null || doc.getLineCount() == 0 || line > (doc.getLineCount() - 1)) {
    return Pair.create(Collections.<String>emptySet(), Collections.<TextWithImports>emptySet());
  }

  final TextRange limit = calculateLimitRange(positionFile, doc, line);

  int startLine = Math.max(limit.getStartOffset(), line - 1);
  startLine = Math.min(startLine, limit.getEndOffset());
  while (startLine > limit.getStartOffset() && shouldSkipLine(positionFile, doc, startLine)) {
    startLine--;
  }
  final int startOffset = doc.getLineStartOffset(startLine);

  int endLine = Math.min(line + 2, limit.getEndOffset());
  while (endLine < limit.getEndOffset() && shouldSkipLine(positionFile, doc, endLine)) {
    endLine++;
  }
  final int endOffset = doc.getLineEndOffset(endLine);

  final TextRange lineRange = new TextRange(startOffset, endOffset);
  if (!lineRange.isEmpty()) {
    final int offset = CharArrayUtil.shiftForward(doc.getCharsSequence(), doc.getLineStartOffset(line), " \t");
    PsiElement element = positionFile.findElementAt(offset);
    if (element != null) {
      PsiMethod method = PsiTreeUtil.getNonStrictParentOfType(element, PsiMethod.class);
      if (method != null) {
        element = method;
      }
      else {
        PsiField field = PsiTreeUtil.getNonStrictParentOfType(element, PsiField.class);
        if (field != null) {
          element = field;
        }
        else {
          final PsiClassInitializer initializer = PsiTreeUtil.getNonStrictParentOfType(element, PsiClassInitializer.class);
          if (initializer != null) {
            element = initializer;
          }
        }
      }

      //noinspection unchecked
      if (element instanceof PsiCompiledElement) {
        return Pair.create(visibleVars, Collections.<TextWithImports>emptySet());
      }
      else {
        VariablesCollector collector = new VariablesCollector(visibleVars, adjustRange(element, lineRange));
        element.accept(collector);
        return Pair.create(collector.getVars(), collector.getExpressions());
      }
    }
  }
  return Pair.create(Collections.<String>emptySet(), Collections.<TextWithImports>emptySet());
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:67,代码来源:JavaStackFrame.java

示例7: isAvailable

import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
@Override
public boolean isAvailable(final SourcePosition position) {
  final PsiFile file = position.getFile();
  return file.getLanguage().isKindOf(JavaLanguage.INSTANCE);
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:6,代码来源:JavaSmartStepIntoHandler.java

示例8: collectLambdas

import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
public static List<PsiLambdaExpression> collectLambdas(@NotNull SourcePosition position, final boolean onlyOnTheLine) {
  ApplicationManager.getApplication().assertReadAccessAllowed();
  PsiFile file = position.getFile();
  final int line = position.getLine();
  final Document document = PsiDocumentManager.getInstance(file.getProject()).getDocument(file);
  if (document == null || line >= document.getLineCount()) {
    return Collections.emptyList();
  }
  PsiElement element = position.getElementAt();
  final TextRange lineRange = DocumentUtil.getLineTextRange(document, line);
  do {
    PsiElement parent = element.getParent();
    if (parent == null || (parent.getTextOffset() < lineRange.getStartOffset())) {
      break;
    }
    element = parent;
  }
  while(true);

  final List<PsiLambdaExpression> lambdas = new ArrayList<PsiLambdaExpression>(3);
  final PsiElementVisitor lambdaCollector = new JavaRecursiveElementVisitor() {
    @Override
    public void visitLambdaExpression(PsiLambdaExpression expression) {
      super.visitLambdaExpression(expression);
      if (!onlyOnTheLine || getFirstElementOnTheLine(expression, document, line) != null) {
        lambdas.add(expression);
      }
    }
  };
  element.accept(lambdaCollector);
  // add initial lambda if we're inside already
  PsiElement method = getContainingMethod(element);
  if (method instanceof PsiLambdaExpression) {
    lambdas.add((PsiLambdaExpression)method);
  }
  for (PsiElement sibling = getNextElement(element); sibling != null; sibling = getNextElement(sibling)) {
    if (!intersects(lineRange, sibling)) {
      break;
    }
    sibling.accept(lambdaCollector);
  }
  return lambdas;
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:44,代码来源:DebuggerUtilsEx.java

示例9: checkGroovyFile

import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
private static void checkGroovyFile(@NotNull SourcePosition position) throws NoDataException {
  if (!(position.getFile() instanceof GroovyFileBase)) {
    throw NoDataException.INSTANCE;
  }
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:6,代码来源:GroovyPositionManager.java

示例10: findElementAt

import com.intellij.debugger.SourcePosition; //导入方法依赖的package包/类
@Nullable
private static PsiElement findElementAt(SourcePosition position) {
  PsiFile file = position.getFile();
  if (!(file instanceof GroovyFileBase) && !(file instanceof PsiJavaFile)) return null;
  return file.findElementAt(position.getOffset());
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:7,代码来源:SpringLoadedPositionManager.java


注:本文中的com.intellij.debugger.SourcePosition.getFile方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。