/* * (c) Copyright IBM Corp. 2000, 2001. * All Rights Reserved. */ package net.sourceforge.phpdt.internal.corext.textmanipulation; import org.eclipse.core.runtime.CoreException; //import net.sourceforge.phpdt.internal.corext.Assert; public abstract class SimpleTextEdit extends TextEdit { private TextRange fRange; private String fText; public static SimpleTextEdit createReplace(int offset, int length, String text) { return new SimpleTextEditImpl(offset, length, text); } public static SimpleTextEdit createInsert(int offset, String text) { return new SimpleTextEditImpl(offset, 0, text); } public static SimpleTextEdit createDelete(int offset, int length) { return new SimpleTextEditImpl(offset, length, ""); //$NON-NLS-1$ } private final static class SimpleTextEditImpl extends SimpleTextEdit { protected SimpleTextEditImpl(TextRange range, String text) { super(range, text); } protected SimpleTextEditImpl(int offset, int length, String text) { super(offset, length, text); } public TextEdit copy() { return new SimpleTextEditImpl(getTextRange().copy(), getText()); } } protected SimpleTextEdit() { this(TextRange.UNDEFINED, ""); //$NON-NLS-1$ } protected SimpleTextEdit(int offset, int length, String text) { this(new TextRange(offset, length), text); } protected SimpleTextEdit(TextRange range, String text) { // Assert.isNotNull(range); // Assert.isNotNull(text); fRange= range; fText= text; } /** * Returns the text edit's text * * @return the text edit's text */ public String getText() { return fText; } /** * Sets the text edit's text *
* This method should only be called from within the
* connect
method.
*
* @param text the text edit's text
*/
protected final void setText(String text) {
fText= text;
// Assert.isNotNull(fText);
}
/**
* Sets the text edit's range.
*
* This method should only be called from within the
* connect
method.
*
* @param range the text edit's range.
*/
protected void setTextRange(TextRange range) {
fRange= range;
// Assert.isNotNull(fRange);
}
/* non Java-doc
* @see TextEdit#getTextRange
*/
public TextRange getTextRange() {
return fRange;
}
/* non Java-doc
* @see TextEdit#doPerform
*/
public final TextEdit perform(TextBuffer buffer) throws CoreException {
String current= buffer.getContent(fRange.fOffset, fRange.fLength);
buffer.replace(fRange, fText);
return new SimpleTextEditImpl(fRange, current);
}
}