diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemProfile.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemProfile.java index aac4a34c9d0..a637fab3ee1 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemProfile.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/IProblemProfile.java @@ -68,6 +68,7 @@ public interface IProblemProfile extends IProblemElement { /** * Add a listener for profile changes + * * @param listener * @since 2.0 */ @@ -75,8 +76,17 @@ public interface IProblemProfile extends IProblemElement { /** * Remove a lister for profile changes + * * @param listener * @since 2.0 */ public void removeProfileChangeListener(IProblemProfileChangeListener listener); + + /** + * Get an object associated with profile, usually the resource + * + * @return resource of another object associated with this profile + * @since 2.0 + */ + public Object getResource(); } diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ProblemProfileChangeEvent.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ProblemProfileChangeEvent.java index 441f22e730e..02b0af7f575 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ProblemProfileChangeEvent.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/model/ProblemProfileChangeEvent.java @@ -12,8 +12,6 @@ package org.eclipse.cdt.codan.core.model; import java.util.EventObject; -import org.eclipse.core.resources.IResource; - /** * An event object describing the details of a change to a preference * in the preference store. @@ -29,7 +27,7 @@ public final class ProblemProfileChangeEvent extends EventObject { private String key; private Object newValue; private Object oldValue; - private IResource resourse; + private Object resource; private IProblemProfile profile; public static final String PROBLEM_KEY = "problem"; //$NON-NLS-1$ public static final String PROBLEM_PREF_KEY = "problem_params"; //$NON-NLS-1$ @@ -44,13 +42,13 @@ public final class ProblemProfileChangeEvent extends EventObject { * @param oldValue the old preference value * @param newValue the new preference value */ - public ProblemProfileChangeEvent(IProblemProfile profile, IResource resource, String key, Object oldValue, Object newValue) { - super(profile); + public ProblemProfileChangeEvent(IProblemProfile profile, Object resource, String key, Object oldValue, Object newValue) { + super(resource); this.key = key; this.newValue = newValue; this.oldValue = oldValue; this.profile = profile; - this.resourse = resource; + this.resource = resource; } /** @@ -59,8 +57,8 @@ public final class ProblemProfileChangeEvent extends EventObject { * * @return the node */ - public IResource getResource() { - return resourse; + public Object getResource() { + return resource; } /** diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CheckersRegistry.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CheckersRegistry.java index 4e13cce130b..9da75a7b37b 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CheckersRegistry.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/CheckersRegistry.java @@ -59,7 +59,7 @@ public class CheckersRegistry implements Iterable, ICheckersRegistry { private CheckersRegistry() { instance = this; - profiles.put(DEFAULT, new ProblemProfile()); + profiles.put(DEFAULT, new ProblemProfile(DEFAULT)); readCheckersRegistry(); initialized = true; } @@ -227,7 +227,7 @@ public class CheckersRegistry implements Iterable, ICheckersRegistry { /* * (non-Javadoc) - * + * * @see org.eclipse.cdt.codan.core.model.ICheckersRegistry#iterator() */ public Iterator iterator() { @@ -247,7 +247,7 @@ public class CheckersRegistry implements Iterable, ICheckersRegistry { /* * (non-Javadoc) - * + * * @see * org.eclipse.cdt.codan.core.model.ICheckersRegistry#addChecker(org.eclipse * .cdt.codan.core.model.IChecker) @@ -258,7 +258,7 @@ public class CheckersRegistry implements Iterable, ICheckersRegistry { /* * (non-Javadoc) - * + * * @see * org.eclipse.cdt.codan.core.model.ICheckersRegistry#addProblem(org.eclipse * .cdt.codan.core.model.IProblem, java.lang.String) @@ -272,7 +272,7 @@ public class CheckersRegistry implements Iterable, ICheckersRegistry { /* * (non-Javadoc) - * + * * @see * org.eclipse.cdt.codan.core.model.ICheckersRegistry#addCategory(org.eclipse * .cdt.codan.core.model.IProblemCategory, java.lang.String) @@ -286,7 +286,7 @@ public class CheckersRegistry implements Iterable, ICheckersRegistry { /* * (non-Javadoc) - * + * * @see * org.eclipse.cdt.codan.core.model.ICheckersRegistry#addRefProblem(org. * eclipse.cdt.codan.core.model.IChecker, @@ -303,7 +303,7 @@ public class CheckersRegistry implements Iterable, ICheckersRegistry { /** * Returns list of problems registered for given checker - * + * * @return collection of problems or null */ public Collection getRefProblems(IChecker checker) { @@ -312,7 +312,7 @@ public class CheckersRegistry implements Iterable, ICheckersRegistry { /* * (non-Javadoc) - * + * * @see * org.eclipse.cdt.codan.core.model.ICheckersRegistry#getDefaultProfile() */ @@ -322,7 +322,7 @@ public class CheckersRegistry implements Iterable, ICheckersRegistry { /* * (non-Javadoc) - * + * * @see * org.eclipse.cdt.codan.core.model.ICheckersRegistry#getWorkspaceProfile() */ @@ -331,6 +331,7 @@ public class CheckersRegistry implements Iterable, ICheckersRegistry { if (wp == null) { try { wp = (IProblemProfile) getDefaultProfile().clone(); + ((ProblemProfile) wp).setResource(ResourcesPlugin.getWorkspace()); // load default values CodanPreferencesLoader loader = new CodanPreferencesLoader(wp); loader.load(CodanPreferencesLoader.getWorkspaceNode()); @@ -353,7 +354,7 @@ public class CheckersRegistry implements Iterable, ICheckersRegistry { /* * (non-Javadoc) - * + * * @see * org.eclipse.cdt.codan.core.model.ICheckersRegistry#getResourceProfile * (org.eclipse.core.resources.IResource) @@ -364,6 +365,7 @@ public class CheckersRegistry implements Iterable, ICheckersRegistry { if (element instanceof IProject) { try { prof = (IProblemProfile) getWorkspaceProfile().clone(); + ((ProblemProfile) prof).setResource(element); // load default values CodanPreferencesLoader loader = new CodanPreferencesLoader(prof); Preferences projectNode = CodanPreferencesLoader.getProjectNode((IProject) element); @@ -387,7 +389,7 @@ public class CheckersRegistry implements Iterable, ICheckersRegistry { /* * (non-Javadoc) - * + * * @seeorg.eclipse.cdt.codan.core.model.ICheckersRegistry# * getResourceProfileWorkingCopy(org.eclipse.core.resources.IResource) */ @@ -405,7 +407,7 @@ public class CheckersRegistry implements Iterable, ICheckersRegistry { * Tests if a checker is enabled (needs to be run) or not. Checker is * enabled * if at least one problem it reports is enabled. - * + * * @param checker * @param resource * @return true if the checker is enabled @@ -428,7 +430,7 @@ public class CheckersRegistry implements Iterable, ICheckersRegistry { /** * Tests if a checker needs to run in a specific launch mode. - * + * * @param checker * @param resource * @param mode diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CodanProblemElement.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CodanProblemElement.java index 222e7749f84..5c68bd7f867 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CodanProblemElement.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/CodanProblemElement.java @@ -90,7 +90,7 @@ public class CodanProblemElement implements IProblemElement { */ protected void notifyChanged(String key) { if (getProfile() instanceof ProblemProfile) { - ((ProblemProfile) getProfile()).fireProfileChangeEvent(null, key, null, this); + ((ProblemProfile) getProfile()).fireProfileChangeEvent(key, null, this); } } } diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/ProblemProfile.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/ProblemProfile.java index 00b132fb874..ab2ad76e57e 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/ProblemProfile.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/model/ProblemProfile.java @@ -18,7 +18,6 @@ import org.eclipse.cdt.codan.core.model.IProblemCategory; import org.eclipse.cdt.codan.core.model.IProblemProfile; import org.eclipse.cdt.codan.core.model.IProblemProfileChangeListener; import org.eclipse.cdt.codan.core.model.ProblemProfileChangeEvent; -import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.ISafeRunnable; import org.eclipse.core.runtime.ListenerList; import org.eclipse.core.runtime.SafeRunner; @@ -29,8 +28,12 @@ import org.eclipse.core.runtime.SafeRunner; */ public class ProblemProfile implements IProblemProfile, Cloneable { private CodanProblemCategory rootCategory; + private Object resource; - public ProblemProfile() { + /** + * @param resource + */ + public ProblemProfile(Object resource) { rootCategory = new CodanProblemCategory("root", "root"); //$NON-NLS-1$ //$NON-NLS-2$ rootCategory.setProfile(this); } @@ -158,11 +161,11 @@ public class ProblemProfile implements IProblemProfile, Cloneable { /* * Convenience method for notifying preference change listeners. */ - protected void fireProfileChangeEvent(IResource resource, String key, Object oldValue, Object newValue) { + protected void fireProfileChangeEvent(String key, Object oldValue, Object newValue) { if (preferenceChangeListeners == null) return; Object[] listeners = preferenceChangeListeners.getListeners(); - final ProblemProfileChangeEvent event = new ProblemProfileChangeEvent(this, resource, key, oldValue, newValue); + final ProblemProfileChangeEvent event = new ProblemProfileChangeEvent(this, this.resource, key, oldValue, newValue); for (int i = 0; i < listeners.length; i++) { final IProblemProfileChangeListener listener = (IProblemProfileChangeListener) listeners[i]; ISafeRunnable job = new ISafeRunnable() { @@ -177,4 +180,17 @@ public class ProblemProfile implements IProblemProfile, Cloneable { SafeRunner.run(job); } } + + /* + * (non-Javadoc) + * + * @see org.eclipse.cdt.codan.core.model.IProblemProfile#getResource() + */ + public Object getResource() { + return resource; + } + + public void setResource(Object resource) { + this.resource = resource; + } }