package com.siberika.idea.pascal.lang.references.impl.manipulators; import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.util.TextRange; import com.intellij.psi.AbstractElementManipulator; import com.intellij.psi.PsiDocumentManager; import com.intellij.util.IncorrectOperationException; import com.siberika.idea.pascal.lang.psi.PascalNamedElement; import org.jetbrains.annotations.NotNull; /** * Author: George Bakhtadze * Date: 23/08/2013 */ public class PascalNamedManipulator extends AbstractElementManipulator<PascalNamedElement> { @Override public PascalNamedElement handleContentChange(@NotNull PascalNamedElement element, @NotNull TextRange range, String newContent) throws IncorrectOperationException { if ((element.getContainingFile() != null) && (element.getContainingFile().getVirtualFile() != null)) { @SuppressWarnings("ConstantConditions") final Document document = FileDocumentManager.getInstance().getDocument(element.getContainingFile().getVirtualFile()); if (document != null) { document.replaceString(element.getTextRange().getStartOffset() + range.getStartOffset(), element.getTextRange().getStartOffset() + range.getEndOffset(), newContent); PsiDocumentManager.getInstance(element.getProject()).commitDocument(document); } } return element; } }