/** * This file is licensed under the University of Illinois/NCSA Open Source License. See LICENSE.TXT for details. */ package edu.illinois.codingtracker.listeners.document; import org.eclipse.core.resources.IFile; import org.eclipse.jface.text.DocumentEvent; import edu.illinois.codingtracker.helpers.ResourceHelper; /** * * @author Stas Negara * */ public class FileDocumentListener extends DocumentListener { private final IFile documentFile; public FileDocumentListener(IFile documentFile) { this.documentFile= documentFile; } @Override protected void handleDocumentChange(DocumentEvent event) { if (isFileRefreshed(event)) { operationRecorder.recordRefreshedFile(documentFile, replacedText); } else { operationRecorder.recordChangedText(event, replacedText, oldDocumentText, documentFile, isUndoing, isRedoing); } } /** * File is considered to be refreshed when the corresponding document is about to be replaced * and the file's content coincides with the current document text and the replacing document * text. * * @param documentEvent * @return */ private boolean isFileRefreshed(DocumentEvent documentEvent) { if (isBufferContentAboutToBeReplaced) { String currentDocumentText= documentEvent.getDocument().get(); return currentDocumentText.equals(ResourceHelper.readFileContent(documentFile)) && currentDocumentText.equals(documentEvent.getText()); } return false; } }