/** * Copyright (c) 2005-2013 by Appcelerator, Inc. All Rights Reserved. * Licensed under the terms of the Eclipse Public License (EPL). * Please see the license.txt included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ package org.python.pydev.debug.codecoverage; import java.util.ListResourceBundle; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.text.DocumentEvent; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IDocumentListener; import org.python.pydev.editor.PyEdit; import org.python.pydev.shared_ui.editor.BaseEditor; import org.python.pydev.shared_ui.editor.IPyEditListener; import org.python.pydev.shared_ui.utils.PyMarkerUtils; /** * @author fabioz * */ public class RemoveCoverageMarkersListener implements IDocumentListener, IPyEditListener { private IDocument doc; private PyEdit edit; private IFile file; public RemoveCoverageMarkersListener(IDocument document, PyEdit edit, IFile file) { this.doc = document; this.edit = edit; this.file = file; document.addDocumentListener(this); edit.addPyeditListener(this); } @Override public void onSave(BaseEditor baseEditor, IProgressMonitor monitor) { removeMarkersAndStopListening(); } @Override public void onCreateActions(ListResourceBundle resources, BaseEditor baseEditor, IProgressMonitor monitor) { } @Override public void onDispose(BaseEditor baseEditor, IProgressMonitor monitor) { removeMarkersAndStopListening(); } @Override public void onSetDocument(IDocument document, BaseEditor baseEditor, IProgressMonitor monitor) { removeMarkersAndStopListening(); } @Override public void documentAboutToBeChanged(DocumentEvent event) { } @Override public void documentChanged(DocumentEvent event) { removeMarkersAndStopListening(); } /** * */ private void removeMarkersAndStopListening() { PyMarkerUtils.removeMarkers(file, PyCodeCoverageView.PYDEV_COVERAGE_MARKER); this.doc.removeDocumentListener(this); this.edit.removePyeditListener(this); } }