下面列出了怎么用com.intellij.psi.impl.source.tree.ChangeUtil的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* This method is used in order to add elements to the back of a map,
* it is derived from {@link ASTDelegatePsiElement#addInternal(ASTNode, ASTNode, ASTNode, Boolean)}.
*/
private static PsiElement realAddBefore(@NotNull GrListOrMap element, @NotNull PsiElement newElement, @NotNull PsiElement anchor) {
CheckUtil.checkWritable(element);
TreeElement elementCopy = ChangeUtil.copyToElement(newElement);
ASTNode anchorNode = getAnchorNode(element, anchor.getNode(), true);
ASTNode newNode = CodeEditUtil.addChildren(element.getNode(), elementCopy, elementCopy, anchorNode);
if (newNode == null) {
throw new IncorrectOperationException("Element cannot be added");
}
if (newNode instanceof TreeElement) {
return ChangeUtil.decodeInformation((TreeElement)newNode).getPsi();
}
return newNode.getPsi();
}
@Nullable
@Override
public TreeElement generateTreeFor(PsiElement original, CharTable table, PsiManager manager) {
TreeElement result = null;
if (original instanceof SqliteMagicLightMethodBuilder) {
result = ChangeUtil.copyElement((TreeElement) SourceTreeToPsiMap.psiElementToTree(original), table);
}
return result;
}
@Nullable
public TreeElement generateTreeFor(PsiElement original, CharTable table, PsiManager manager) {
TreeElement result = null;
if (original instanceof LombokLightMethodBuilder) {
result = ChangeUtil.copyElement((TreeElement) SourceTreeToPsiMap.psiElementToTree(original), table);
}
return result;
}
private static void updateAddedFile(PsiFile copyPsi) throws IncorrectOperationException {
final UpdateAddedFileProcessor processor = UpdateAddedFileProcessor.forElement(copyPsi);
if (processor != null) {
final TreeElement tree = (TreeElement)SourceTreeToPsiMap.psiElementToTree(copyPsi);
if (tree != null) {
ChangeUtil.encodeInformation(tree);
}
processor.update(copyPsi, null);
if (tree != null) {
ChangeUtil.decodeInformation(tree);
}
}
}