/** * Copyright (c) 2005-2011 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 com.python.pydev.analysis.builder; import java.util.ListResourceBundle; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.text.IDocument; import org.eclipse.ui.IEditorInput; import org.python.pydev.core.MisconfigurationException; import org.python.pydev.core.log.Log; import org.python.pydev.editor.IPyEditListener; import org.python.pydev.editor.IPyEditListener3; import org.python.pydev.editor.PyEdit; import org.python.pydev.plugin.nature.PythonNature; import com.python.pydev.analysis.additionalinfo.AdditionalProjectInterpreterInfo; /** * When the editor is disposed, if needed this class will remove the markers from the related * file (if no other editor is still editing the same file) and will remove the hash from the * additional info. * * @author Fabio */ public class PreloadAdditionalInfoPyEditListener implements IPyEditListener, IPyEditListener3 { public void onCreateActions(ListResourceBundle resources, PyEdit edit, IProgressMonitor monitor) { } public void onDispose(PyEdit edit, IProgressMonitor monitor) { } public void onSave(PyEdit edit, IProgressMonitor monitor) { } public void onSetDocument(IDocument document, PyEdit edit, IProgressMonitor monitor) { } public void onInputChanged(PyEdit edit, IEditorInput oldInput, IEditorInput input, IProgressMonitor monitor) { if (input != null) { IResource adapter = (IResource) input.getAdapter(IResource.class); if (adapter != null) { IProject project = adapter.getProject(); final PythonNature nature = PythonNature.getPythonNature(project); if (nature != null) { Job job = new Job("Preload additional info") { @Override protected IStatus run(IProgressMonitor monitor) { try { AdditionalProjectInterpreterInfo.getAdditionalInfo(nature); } catch (MisconfigurationException e) { Log.log(e); } return Status.OK_STATUS; } }; job.setSystem(true); job.schedule(100); } } } } }