From c875ab1d89975b558dc016b0d60fcf5c2e6f90f9 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Mon, 14 May 2007 15:15:52 +0000 Subject: [PATCH] Bug 186755, move registration of resource-listener of project-desc-manager to the beginning of the plugin.start(). --- .../model/CProjectDescriptionManager.java | 72 ++++++++++--------- .../src/org/eclipse/cdt/core/CCorePlugin.java | 5 +- 2 files changed, 39 insertions(+), 38 deletions(-) diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java index aaa44e1895a..795d3b8984b 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/settings/model/CProjectDescriptionManager.java @@ -286,44 +286,46 @@ public class CProjectDescriptionManager implements ICProjectDescriptionManager { return fInstance; } - public void startup(){ - if(fRcChangeHandler == null){ - fRcChangeHandler = new ResourceChangeHandler(); + public void registerResourceListener() { + assert fRcChangeHandler == null; + fRcChangeHandler = new ResourceChangeHandler(); + + ResourcesPlugin.getWorkspace().addResourceChangeListener( + fRcChangeHandler, + IResourceChangeEvent.POST_CHANGE + | IResourceChangeEvent.PRE_DELETE + | IResourceChangeEvent.PRE_CLOSE + /*| IResourceChangeEvent.POST_BUILD*/); + } - ResourcesPlugin.getWorkspace().addResourceChangeListener( - fRcChangeHandler, - IResourceChangeEvent.POST_CHANGE - | IResourceChangeEvent.PRE_DELETE - | IResourceChangeEvent.PRE_CLOSE - /*| IResourceChangeEvent.POST_BUILD*/); + public void startup(){ + assert fRcChangeHandler != null; + fDescriptorManager.startup(); - fDescriptorManager.startup(); - - CExternalSettingsManager.getInstance().startup(); - - IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); - Job rcJob = new Job(SettingsModelMessages.getString("CProjectDescriptionManager.0")){ //$NON-NLS-1$ - protected IStatus run(IProgressMonitor monitor) { - try{ - startSaveParticipant(); - } catch (CoreException e){ - CCorePlugin.log(e); - return e.getStatus(); - } - return new Status( - IStatus.OK, - CCorePlugin.PLUGIN_ID, - IStatus.OK, - new String(), - null); + CExternalSettingsManager.getInstance().startup(); + + IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); + Job rcJob = new Job(SettingsModelMessages.getString("CProjectDescriptionManager.0")){ //$NON-NLS-1$ + protected IStatus run(IProgressMonitor monitor) { + try{ + startSaveParticipant(); + } catch (CoreException e){ + CCorePlugin.log(e); + return e.getStatus(); } - }; - - rcJob.setRule(root); - rcJob.setPriority(Job.INTERACTIVE); - rcJob.setSystem(true); - rcJob.schedule(); - } + return new Status( + IStatus.OK, + CCorePlugin.PLUGIN_ID, + IStatus.OK, + new String(), + null); + } + }; + + rcJob.setRule(root); + rcJob.setPriority(Job.INTERACTIVE); + rcJob.setSystem(true); + rcJob.schedule(); } /* diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java index 622cbfa1bbc..bcb98d82672 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java @@ -336,13 +336,12 @@ public class CCorePlugin extends Plugin { public void start(BundleContext context) throws Exception { super.start(context); + // make sure to register the resource listener as the first one in CDT: fNewCProjectDescriptionManager= CProjectDescriptionManager.getInstance(); + fNewCProjectDescriptionManager.registerResourceListener(); - // Start file type manager first !! fPathEntryVariableManager = new CdtVarPathEntryVariableManager(); - cdtLog = new CDTLogWriter(CCorePlugin.getDefault().getStateLocation().append(".log").toFile()); //$NON-NLS-1$ - fCoreModel = CoreModel.getDefault(); // Fire up the PDOM