/** * 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.jface.text.BadLocationException; import org.eclipse.jface.text.DocumentEvent; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IDocumentListener; import edu.illinois.codingtracker.helpers.Debugger; import edu.illinois.codingtracker.helpers.Messages; import edu.illinois.codingtracker.listeners.BasicListener; /** * * @author Stas Negara * */ public abstract class DocumentListener extends BasicListener implements IDocumentListener { private static final String ERROR_TEXT= ",,,,,"; protected String replacedText= ""; protected String oldDocumentText= ""; private DocumentEvent currentEvent= null; @Override public void documentAboutToBeChanged(DocumentEvent event) { currentEvent= event; try { IDocument document= event.getDocument(); replacedText= document.get(event.getOffset(), event.getLength()); oldDocumentText= document.get(); } catch (BadLocationException e) { handleException(e, event, Messages.Recorder_BadDocumentLocation); } } @Override public void documentChanged(DocumentEvent event) { if (currentEvent != event) { handleException(new RuntimeException(), event, Messages.Recorder_UnsynchronizedDocumentNotifications); } handleDocumentChange(event); } private void handleException(Exception ex, DocumentEvent event, String message) { Debugger.logExceptionToErrorLog(ex, message + ": offset=" + event.getOffset() + ", length=" + event.getLength()); replacedText= ERROR_TEXT; oldDocumentText= ERROR_TEXT; } protected abstract void handleDocumentChange(DocumentEvent event); }