package org.eclipse.iee.editor.text.edit;
import org.eclipse.iee.core.document.text.ITextLocation;
import org.eclipse.iee.core.document.text.OffsetTextLocation;
import org.eclipse.iee.core.document.text.Text;
import com.google.common.base.Objects;
public class ReplaceText implements IEditCommand {
private Text fModel;
private int fFrom;
private int fTo;
private String fText;
public ReplaceText(Text model, int from, int to, String text) {
fModel = model;
fFrom = from;
fTo = to;
fText = text;
}
@Override
public void perform() {
String oldV = Objects.firstNonNull(fModel.getText(), "");
String newV = oldV.substring(0, Math.min(fFrom, fTo)) + fText + oldV.substring(Math.max(fFrom, fTo));
fModel.setText(newV);
}
@Override
public ITextLocation adjust(ITextLocation location) {
if (location.getOffset() >= fTo) {
return new OffsetTextLocation(fModel, location.getOffset() - (fTo - fFrom) + fText.length());
}
return location;
}
}