package com.siberika.idea.pascal.lang.references.impl.manipulators; import com.intellij.openapi.util.TextRange; import com.intellij.psi.AbstractElementManipulator; import com.intellij.util.IncorrectOperationException; import com.siberika.idea.pascal.lang.psi.impl.PascalStringImpl; import org.jetbrains.annotations.NotNull; /** * Author: George Bakhtadze * Date: 21/01/2016 */ public class PascalStringManipulator extends AbstractElementManipulator<PascalStringImpl> { @Override public PascalStringImpl handleContentChange(@NotNull PascalStringImpl psi, @NotNull TextRange range, String newContent) throws IncorrectOperationException { final String oldText = psi.getText(); final String newText = oldText.substring(0, range.getStartOffset()) + newContent + oldText.substring(range.getEndOffset()); return psi.updateText(newText); } @NotNull @Override public TextRange getRangeInElement(@NotNull final PascalStringImpl element) { return getStringTokenRange(element); } public static TextRange getStringTokenRange(final PascalStringImpl element) { return TextRange.from(1, element.getTextLength()-2); } }