From babba4a0a73ebdda234573c6a8fed844ff452abd Mon Sep 17 00:00:00 2001 From: Andrew Gvozdev Date: Sun, 30 Oct 2011 14:41:02 -0400 Subject: [PATCH] AbstractBuiltinSpecsDetector to execute() on registering, no more IResourceChangeListener --- .../AbstractBuiltinSpecsDetector.java | 46 ++----------------- .../LanguageSettingsProvidersSerializer.java | 6 +++ 2 files changed, 9 insertions(+), 43 deletions(-) diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/AbstractBuiltinSpecsDetector.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/AbstractBuiltinSpecsDetector.java index 96b3f81536c..02ac1c74c7d 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/AbstractBuiltinSpecsDetector.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/AbstractBuiltinSpecsDetector.java @@ -49,9 +49,6 @@ import org.eclipse.cdt.utils.PathUtil; import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IResourceChangeEvent; -import org.eclipse.core.resources.IResourceChangeListener; -import org.eclipse.core.resources.IResourceDelta; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; @@ -70,8 +67,7 @@ import org.eclipse.core.runtime.jobs.ISchedulingRule; import org.eclipse.core.runtime.jobs.Job; import org.w3c.dom.Element; -public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSettingsOutputScanner - implements ICListenerRegisterer, IResourceChangeListener { +public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSettingsOutputScanner implements ICListenerRegisterer { private static final int TICKS_STREAM_MONITOR = 100; private static final int TICKS_CLEAN_MARKERS = 1; private static final int TICKS_RUN_FOR_ONE_LANGUAGE = 10; @@ -241,55 +237,19 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti public void registerListener(ICConfigurationDescription cfgDescription) { currentCfgDescription = cfgDescription; - ResourcesPlugin.getWorkspace().addResourceChangeListener(this, IResourceChangeEvent.POST_BUILD); // TODO - remove me CCorePlugin.log(new Status(IStatus.INFO,CCorePlugin.PLUGIN_ID, getPrefixForLog() + "Added listener [" + System.identityHashCode(this) + "] " + this)); + + execute(); } public void unregisterListener() { - ResourcesPlugin.getWorkspace().removeResourceChangeListener(this); // TODO - remove me CCorePlugin.log(new Status(IStatus.INFO,CCorePlugin.PLUGIN_ID, getPrefixForLog() + "Removed listener [" + System.identityHashCode(this) + "] " + this)); } - private String eventToString(IResourceChangeEvent event) { - String strType = null; - IResource rc = null; - if (event != null) { - int type = event.getType(); - switch (type) { - case IResourceChangeEvent.POST_CHANGE: strType = "POST_CHANGE";break; - case IResourceChangeEvent.PRE_CLOSE: strType = "PRE_CLOSE";break; - case IResourceChangeEvent.PRE_DELETE: strType = "PRE_DELETE";break; - case IResourceChangeEvent.PRE_BUILD: strType = "PRE_BUILD";break; - case IResourceChangeEvent.POST_BUILD: strType = "POST_BUILD";break; - case IResourceChangeEvent.PRE_REFRESH: strType = "PRE_REFRESH";break; - default: strType = "unknown";break; - } - strType += "=" + Integer.toHexString(type); - - IResourceDelta delta = event.getDelta(); - rc = delta!=null ? delta.getResource() : null; - } - String result = "Event " + strType + ", " + rc; - return result; - } - - public void resourceChanged(IResourceChangeEvent event) { - System.out.println(eventToString(event)); - - // if (event.getType() != IResourceChangeEvent.PRE_BUILD) - // return; - // - // IResourceDelta delta = event.getDelta(); - // delta.getKind(); - // delta.getFlags(); - - execute(); - } - protected void execute() { if (isExecuted) { // // TODO - remove me diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java index 0da61e95916..1e5852a9194 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/language/settings/providers/LanguageSettingsProvidersSerializer.java @@ -41,12 +41,15 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.ILock; import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.core.runtime.preferences.IEclipsePreferences; +import org.eclipse.core.runtime.preferences.InstanceScope; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class LanguageSettingsProvidersSerializer { + private static final String PREFERENCE_WORSPACE_PROVIDERS_SET = "language.settings.providers.set.for.workspace"; private static final String STORAGE_WORKSPACE_LANGUAGE_SETTINGS = "language.settings.xml"; //$NON-NLS-1$ private static final String SETTINGS_FOLDER_NAME = ".settings/"; //$NON-NLS-1$ private static final String STORAGE_PROJECT_LANGUAGE_SETTINGS = "language.settings.xml"; //$NON-NLS-1$ @@ -199,6 +202,9 @@ public class LanguageSettingsProvidersSerializer { public static void setWorkspaceProviders(List providers) throws CoreException { setWorkspaceProvidersInternal(providers); serializeLanguageSettingsWorkspace(); + // generate preference change event + IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(CCorePlugin.PLUGIN_ID); + prefs.putBoolean(PREFERENCE_WORSPACE_PROVIDERS_SET, ! prefs.getBoolean(PREFERENCE_WORSPACE_PROVIDERS_SET, false)); } /**