package org.python.pydev.refactoring.core.base;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.text.IDocument;
import org.eclipse.ltk.core.refactoring.Change;
import org.eclipse.ltk.core.refactoring.RefactoringStatus;
import org.eclipse.ltk.core.refactoring.TextChange;
import org.eclipse.ltk.internal.core.refactoring.TextChanges;
import org.eclipse.ltk.internal.core.refactoring.UndoDocumentChange;
import org.eclipse.text.edits.UndoEdit;
public class PyDocumentChangeForTests extends TextChange {
private IDocument fDocument;
private int fLength;
/**
* Creates a new <code>DocumentChange</code> for the given
* {@link IDocument}.
*
* @param name the change's name. Has to be a human readable name.
* @param document the document this change is working on
*/
public PyDocumentChangeForTests(String name, IDocument document) {
super(name);
Assert.isNotNull(document);
fDocument = document;
}
/**
* {@inheritDoc}
*/
public Object getModifiedElement() {
return fDocument;
}
/**
* {@inheritDoc}
*/
public void initializeValidationData(IProgressMonitor pm) {
// as long as we don't have modification stamps on documents
// we can only remember its length.
fLength = fDocument.getLength();
}
/**
* {@inheritDoc}
*/
public RefactoringStatus isValid(IProgressMonitor pm) throws CoreException {
pm.beginTask("", 1); //$NON-NLS-1$
RefactoringStatus result = TextChanges.isValid(fDocument, fLength);
pm.worked(1);
return result;
}
/**
* {@inheritDoc}
*/
protected IDocument acquireDocument(IProgressMonitor pm) throws CoreException {
return fDocument;
}
/**
* {@inheritDoc}
*/
protected void commit(IDocument document, IProgressMonitor pm) throws CoreException {
// do nothing
}
/**
* {@inheritDoc}
*/
protected void releaseDocument(IDocument document, IProgressMonitor pm) throws CoreException {
//do nothing
}
/**
* {@inheritDoc}
*/
protected Change createUndoChange(UndoEdit edit) {
return new UndoDocumentChange(getName(), fDocument, edit);
}
}