Beispiel #1
0
 @Override
 public PsiElement addAfter(@NotNull PsiElement element, PsiElement anchor)
     throws IncorrectOperationException {
   CheckUtil.checkWritable(this);
   TreeElement elementCopy = ChangeUtil.copyToElement(element);
   calcTreeElement()
       .addInternal(
           elementCopy, elementCopy, SourceTreeToPsiMap.psiElementToTree(anchor), Boolean.FALSE);
   elementCopy = ChangeUtil.decodeInformation(elementCopy);
   return SourceTreeToPsiMap.treeElementToPsi(elementCopy);
 }
Beispiel #2
0
 @Override
 public void deleteChildRange(PsiElement first, PsiElement last)
     throws IncorrectOperationException {
   CheckUtil.checkWritable(this);
   if (first == null) {
     LOG.assertTrue(last == null);
     return;
   }
   ASTNode firstElement = SourceTreeToPsiMap.psiElementToTree(first);
   ASTNode lastElement = SourceTreeToPsiMap.psiElementToTree(last);
   CompositeElement treeElement = calcTreeElement();
   LOG.assertTrue(firstElement.getTreeParent() == treeElement);
   LOG.assertTrue(lastElement.getTreeParent() == treeElement);
   CodeEditUtil.removeChildren(treeElement, firstElement, lastElement);
 }
Beispiel #3
0
 @Override
 public PsiElement addRangeBefore(
     @NotNull PsiElement first, @NotNull PsiElement last, PsiElement anchor)
     throws IncorrectOperationException {
   return SharedImplUtil.addRange(
       this, first, last, SourceTreeToPsiMap.psiElementToTree(anchor), Boolean.TRUE);
 }
  @NotNull
  @Override
  public PsiCatchSection createCatchSection(
      @NotNull final PsiType exceptionType,
      @NotNull final String exceptionName,
      @Nullable final PsiElement context)
      throws IncorrectOperationException {
    if (!(exceptionType instanceof PsiClassType || exceptionType instanceof PsiDisjunctionType)) {
      throw new IncorrectOperationException("Unexpected type:" + exceptionType);
    }

    @NonNls
    final String text = "catch (" + exceptionType.getCanonicalText() + " " + exceptionName + ") {}";
    final DummyHolder holder =
        DummyHolderFactory.createHolder(
            myManager, new JavaDummyElement(text, CATCH_SECTION, level(context)), context);
    final PsiElement element =
        SourceTreeToPsiMap.treeElementToPsi(holder.getTreeElement().getFirstChildNode());
    if (!(element instanceof PsiCatchSection)) {
      throw new IncorrectOperationException(
          "Incorrect catch section '" + text + "'. Parsed element: " + element);
    }

    final Project project = myManager.getProject();
    final JavaPsiImplementationHelper helper = JavaPsiImplementationHelper.getInstance(project);
    helper.setupCatchBlock(exceptionName, exceptionType, context, (PsiCatchSection) element);
    final CodeStyleManager styleManager = CodeStyleManager.getInstance(project);
    final PsiCatchSection catchSection = (PsiCatchSection) styleManager.reformat(element);

    GeneratedMarkerVisitor.markGenerated(catchSection);
    return catchSection;
  }
Beispiel #5
0
 @Override
 public PsiElement add(@NotNull PsiElement element) throws IncorrectOperationException {
   CheckUtil.checkWritable(this);
   TreeElement elementCopy = ChangeUtil.copyToElement(element);
   calcTreeElement().addInternal(elementCopy, elementCopy, null, null);
   elementCopy = ChangeUtil.decodeInformation(elementCopy);
   return SourceTreeToPsiMap.treeElementToPsi(elementCopy);
 }
 @NotNull
 private PsiAnnotation createAnnotationFromText(@NotNull final String text)
     throws IncorrectOperationException {
   // synchronize during interning in charTable
   synchronized (charTable) {
     final DummyHolder holder =
         DummyHolderFactory.createHolder(
             myPsiManager,
             new JavaDummyElement(text, ANNOTATION, LanguageLevel.HIGHEST),
             null,
             charTable);
     final PsiElement element =
         SourceTreeToPsiMap.treeElementToPsi(holder.getTreeElement().getFirstChildNode());
     if (!(element instanceof PsiAnnotation)) {
       throw new IncorrectOperationException("Incorrect annotation \"" + text + "\".");
     }
     return (PsiAnnotation) element;
   }
 }