Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Valenta2006-01-13 22:04:03 +0000
committerMichael Valenta2006-01-13 22:04:03 +0000
commit53ef8c37741aaa562e0c1a4220aabb0451914cdb (patch)
tree888dac6528517999d6bb44d818ccbc25ee2d3937
parent2bc8e627995e674c965e70ca1bd6262512da15a2 (diff)
downloadeclipse.platform.team-53ef8c37741aaa562e0c1a4220aabb0451914cdb.tar.gz
eclipse.platform.team-53ef8c37741aaa562e0c1a4220aabb0451914cdb.tar.xz
eclipse.platform.team-53ef8c37741aaa562e0c1a4220aabb0451914cdb.zip
Bug 86493 Working set decorator does not change when contained resources change
-rw-r--r--bundles/org.eclipse.team.cvs.ui/plugin.xml4
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoration.java27
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoratorPreferencesPage.java2
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSLightweightDecorator.java155
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java3
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/CommonViewerAdvisor.java10
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/mapping/SynchronizationLabelProvider.java7
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/mapping/SynchronizationStateTester.java6
8 files changed, 134 insertions, 80 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/plugin.xml b/bundles/org.eclipse.team.cvs.ui/plugin.xml
index 42bfe4bda..c0bf944d3 100644
--- a/bundles/org.eclipse.team.cvs.ui/plugin.xml
+++ b/bundles/org.eclipse.team.cvs.ui/plugin.xml
@@ -772,7 +772,6 @@
point="org.eclipse.ui.decorators">
<decorator
lightweight="true"
- objectClass="org.eclipse.core.resources.IResource"
adaptable="true"
location="BOTTOM_RIGHT"
label="%DecoratorStandard.name"
@@ -782,6 +781,9 @@
<description>
%DecoratorStandard.desc
</description>
+ <enablement>
+ <objectClass name="org.eclipse.core.resources.mapping.ResourceMapping"/>
+ </enablement>
</decorator>
</extension>
<!-- *************** View Actions **************** -->
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoration.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoration.java
index d963fad77..3997b6704 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoration.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoration.java
@@ -49,6 +49,8 @@ import org.eclipse.ui.themes.ITheme;
*/
public class CVSDecoration {
+ public static final int MODEL = 1000;
+
// Decorations
private String prefix;
private String suffix;
@@ -78,7 +80,6 @@ public class CVSDecoration {
private String fileFormatter;
private String folderFormatter;
private String projectFormatter;
- private String resourceName;
// Images cached for better performance
private static ImageDescriptor dirty;
@@ -128,7 +129,7 @@ public class CVSDecoration {
* Default constructor uses the plug-in's preferences to determine text decoration
* formatters and preferences.
*/
- public CVSDecoration(String resourceName) {
+ public CVSDecoration() {
// TODO: for efficiency don't look up a pref until its needed
IPreferenceStore store = getStore();
Preferences prefs = new Preferences();
@@ -142,19 +143,18 @@ public class CVSDecoration {
prefs.setValue(ICVSUIConstants.PREF_ADDED_FLAG, store.getString(ICVSUIConstants.PREF_ADDED_FLAG));
prefs.setValue(ICVSUIConstants.PREF_USE_FONT_DECORATORS, store.getString(ICVSUIConstants.PREF_USE_FONT_DECORATORS));
- initialize(resourceName, prefs, store.getString(ICVSUIConstants.PREF_FILETEXT_DECORATION), store.getString(ICVSUIConstants.PREF_FOLDERTEXT_DECORATION), store.getString(ICVSUIConstants.PREF_PROJECTTEXT_DECORATION));
+ initialize(prefs, store.getString(ICVSUIConstants.PREF_FILETEXT_DECORATION), store.getString(ICVSUIConstants.PREF_FOLDERTEXT_DECORATION), store.getString(ICVSUIConstants.PREF_PROJECTTEXT_DECORATION));
}
- public CVSDecoration(String resourceName, Preferences preferences, String fileFormater, String folderFormatter, String projectFormatter) {
- initialize(resourceName, preferences, fileFormater, folderFormatter, projectFormatter);
+ public CVSDecoration(Preferences preferences, String fileFormater, String folderFormatter, String projectFormatter) {
+ initialize(preferences, fileFormater, folderFormatter, projectFormatter);
}
private IPreferenceStore getStore() {
return CVSUIPlugin.getPlugin().getPreferenceStore();
}
- private void initialize(String resourceName, Preferences preferences, String fileFormater, String folderFormatter, String projectFormatter) {
- this.resourceName = resourceName;
+ private void initialize(Preferences preferences, String fileFormater, String folderFormatter, String projectFormatter) {
this.preferences = preferences;
this.fileFormatter = fileFormater;
this.folderFormatter = folderFormatter;
@@ -248,10 +248,9 @@ public class CVSDecoration {
} else if(isHasRemote()){
bindings.put(CVSDecoratorConfiguration.FILE_REVISION, getRevision());
bindings.put(CVSDecoratorConfiguration.RESOURCE_TAG, getTag());
- }
- bindings.put(CVSDecoratorConfiguration.RESOURCE_NAME, getResourceName());
+ }
bindings.put(CVSDecoratorConfiguration.FILE_KEYWORD, getKeywordSubstitution());
- if (resourceType != IResource.FILE && location != null) {
+ if ((resourceType == IResource.FOLDER || resourceType == IResource.PROJECT) && location != null) {
bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_HOST, location.getHost());
bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_METHOD, location.getMethod().getName());
bindings.put(CVSDecoratorConfiguration.REMOTELOCATION_USER, location.getUsername());
@@ -289,7 +288,7 @@ public class CVSDecoration {
}
// show checked in
if (preferences.getBoolean(ICVSUIConstants.PREF_SHOW_HASREMOTE_DECORATION) && isHasRemote()) {
- if (resourceType != IResource.FILE && isVirtualFolder()) {
+ if ((resourceType == IResource.FOLDER || resourceType == IResource.PROJECT) && isVirtualFolder()) {
return noRemoteDir;
}
return checkedIn;
@@ -314,10 +313,6 @@ public class CVSDecoration {
}
}
- private String getResourceName() {
- return resourceName;
- }
-
private String getTextFormatter() {
switch (resourceType) {
case IResource.FILE :
@@ -326,6 +321,8 @@ public class CVSDecoration {
return folderFormatter;
case IResource.PROJECT :
return projectFormatter;
+ case MODEL :
+ return folderFormatter;
}
return "no format specified"; //$NON-NLS-1$
}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoratorPreferencesPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoratorPreferencesPage.java
index 09459f5eb..f9fecd825 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoratorPreferencesPage.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoratorPreferencesPage.java
@@ -636,7 +636,7 @@ public class CVSDecoratorPreferencesPage extends PreferencePage implements IWork
fTextTab.setPreferences(prefs);
fGeneralTab.setPreferences(prefs);
- final CVSDecoration decoration= new CVSDecoration(file.name, prefs, fTextTab.getFileTextFormat(), fTextTab.getFolderTextFormat(), fTextTab.getProjectTextFormat());
+ final CVSDecoration decoration= new CVSDecoration(prefs, fTextTab.getFileTextFormat(), fTextTab.getFolderTextFormat(), fTextTab.getProjectTextFormat());
decoration.setKeywordSubstitution(Command.KSUBST_TEXT.getShortDisplayText());
decoration.setRevision("1.45"); //$NON-NLS-1$
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSLightweightDecorator.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSLightweightDecorator.java
index deb46b924..518af7117 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSLightweightDecorator.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSLightweightDecorator.java
@@ -15,6 +15,7 @@ import java.text.SimpleDateFormat;
import java.util.*;
import org.eclipse.core.resources.*;
+import org.eclipse.core.resources.mapping.ResourceMapping;
import org.eclipse.core.runtime.*;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.util.IPropertyChangeListener;
@@ -30,8 +31,9 @@ import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
import org.eclipse.team.internal.ccvs.core.util.KnownRepositories;
import org.eclipse.team.internal.ccvs.core.util.ResourceStateChangeListeners;
import org.eclipse.team.internal.core.ExceptionCollector;
+import org.eclipse.team.internal.ui.Utils;
import org.eclipse.team.ui.TeamUI;
-import org.eclipse.team.ui.mapping.SynchronizationLabelProvider;
+import org.eclipse.team.ui.mapping.SynchronizationStateTester;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.themes.ITheme;
import org.osgi.framework.Bundle;
@@ -55,6 +57,8 @@ public class CVSLightweightDecorator extends LabelProvider implements ILightweig
CVSDecoratorConfiguration.OUTGOING_CHANGE_FOREGROUND_COLOR,
CVSDecoratorConfiguration.IGNORED_BACKGROUND_COLOR,
CVSDecoratorConfiguration.IGNORED_FOREGROUND_COLOR};
+
+ private static final SynchronizationStateTester DEFAULT_TESTER = new SynchronizationStateTester();
public CVSLightweightDecorator() {
ResourceStateChangeListeners.getListener().addResourceStateChangeListener(this);
@@ -109,7 +113,8 @@ public class CVSLightweightDecorator extends LabelProvider implements ILightweig
* Answers null if a provider does not exist or the provider is not a CVS provider. These resources
* will be ignored by the decorator.
*/
- private CVSTeamProvider getCVSProviderFor(IResource resource) {
+ private static CVSTeamProvider getCVSProviderFor(IResource resource) {
+ if (resource == null) return null;
RepositoryProvider p =
RepositoryProvider.getProvider(
resource.getProject(),
@@ -119,24 +124,6 @@ public class CVSLightweightDecorator extends LabelProvider implements ILightweig
}
return (CVSTeamProvider) p;
}
-
- /**
- * Returns the resource for the given input object, or
- * null if there is no resource associated with it.
- *
- * @param object the object to find the resource for
- * @return the resource for the given object, or null
- */
- private IResource getResource(Object object) {
- if (object instanceof IResource) {
- return (IResource) object;
- }
- if (object instanceof IAdaptable) {
- return (IResource) ((IAdaptable) object).getAdapter(
- IResource.class);
- }
- return null;
- }
/**
* This method should only be called by the decorator thread.
@@ -144,29 +131,32 @@ public class CVSLightweightDecorator extends LabelProvider implements ILightweig
* @see org.eclipse.jface.viewers.ILightweightLabelDecorator#decorate(java.lang.Object, org.eclipse.jface.viewers.IDecoration)
*/
public void decorate(Object element, IDecoration decoration) {
+
+ // Don't decorate the workspace root
IResource resource = getResource(element);
- if (resource == null || resource.getType() == IResource.ROOT)
+ if (resource != null && resource.getType() == IResource.ROOT)
+ return;
+
+ // Get the mapping for the object and ensure it overlaps with CVS projects
+ ResourceMapping mapping = Utils.getResourceMapping(element);
+ if (mapping == null)
return;
-
- CVSTeamProvider cvsProvider = getCVSProviderFor(resource);
- if (cvsProvider == null)
+ if (!isMappedToCVS(mapping))
return;
+ // Get the sync state tester from the context
+ IDecorationContext context = decoration.getDecorationContext();
+ SynchronizationStateTester tester = DEFAULT_TESTER;
+ Object property = context.getProperty(SynchronizationStateTester.PROP_TESTER);
+ if (property instanceof SynchronizationStateTester) {
+ tester = (SynchronizationStateTester) property;
+ }
+
+ // Calculate and apply the decoration
try {
- boolean includeDirtyCheck = true;
- IDecorationContext context = decoration.getDecorationContext();
- String[] ids = context.getContextIds();
- for (int i = 0; i < ids.length; i++) {
- String id = ids[i];
- if (id.equals(SynchronizationLabelProvider.SYNCHRONIZATION_AWARE_PROVIDER)) {
- includeDirtyCheck = false;
- break;
- }
- }
- CVSDecoration cvsDecoration = decorate(resource, includeDirtyCheck);
- cvsDecoration.setWatchEditEnabled(cvsProvider.isWatchEditEnabled());
+ CVSDecoration cvsDecoration = decorate(element, tester);
cvsDecoration.apply(decoration);
- } catch(CVSException e) {
+ } catch(CoreException e) {
handleException(resource, e);
} catch (IllegalStateException e) {
// This is thrown by Core if the workspace is in an illegal state
@@ -178,24 +168,62 @@ public class CVSLightweightDecorator extends LabelProvider implements ILightweig
}
}
- public static CVSDecoration decorate(IResource resource, boolean includeDirtyCheck) throws CVSException {
+ private IResource getResource(Object element) {
+ if (element instanceof ResourceMapping) {
+ element = ((ResourceMapping) element).getModelObject();
+ }
+ return Utils.getResource(element);
+ }
+
+ /*
+ * Return whether any of the projects of the mapping are mapped to CVS
+ */
+ private boolean isMappedToCVS(ResourceMapping mapping) {
+ IProject[] projects = mapping.getProjects();
+ for (int i = 0; i < projects.length; i++) {
+ IProject project = projects[i];
+ if (getCVSProviderFor(project) != null) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private CVSDecoration decorate(Object element, SynchronizationStateTester tester) throws CoreException {
+ IPreferenceStore store = CVSUIPlugin.getPlugin().getPreferenceStore();
+ CVSDecoration result = new CVSDecoration();
+
+ // First, decorate the synchronization state
+ if (tester.isStateDecorationEnabled()) {
+ if (tester.isSupervised(element)) {
+ result.setHasRemote(true);
+ if (tester.hasOutgoingChange(element, store.getBoolean(ICVSUIConstants.PREF_CALCULATE_DIRTY), new NullProgressMonitor())) {
+ result.setDirty(true);
+ }
+ } else {
+ result.setIgnored(true);
+ }
+ }
+
+ // If the element adapts to a single resource, add additional decorations
+ IResource resource = getResource(element);
+ if (resource == null) {
+ result.setResourceType(CVSDecoration.MODEL);
+ } else {
+ decorate(resource, result);
+ }
+ return result;
+ }
+
+ private static void decorate(IResource resource, CVSDecoration cvsDecoration) throws CVSException {
IPreferenceStore store = CVSUIPlugin.getPlugin().getPreferenceStore();
ICVSResource cvsResource = CVSWorkspaceRoot.getCVSResourceFor(resource);
- CVSDecoration cvsDecoration = new CVSDecoration(resource.getName());
cvsDecoration.setResourceType(resource.getType());
if (cvsResource.isIgnored()) {
cvsDecoration.setIgnored(true);
}
if (!cvsDecoration.isIgnored()) {
- // Dirty
- if (includeDirtyCheck) {
- boolean computeDeepDirtyCheck = store.getBoolean(ICVSUIConstants.PREF_CALCULATE_DIRTY);
- int type = resource.getType();
- if (type == IResource.FILE || computeDeepDirtyCheck) {
- cvsDecoration.setDirty(CVSLightweightDecorator.isDirty(resource));
- }
- }
// Tag
CVSTag tag = getTagToShow(resource);
if (tag != null) {
@@ -222,13 +250,35 @@ public class CVSLightweightDecorator extends LabelProvider implements ILightweig
}
}
}
+ // Extract type specific properties
+ if (resource.getType() == IResource.FILE) {
+ extractFileProperties((IFile) resource, cvsDecoration);
+ } else {
+ extractContainerProperties((IContainer) resource, cvsDecoration);
+ }
}
- // Extract type specific properties
- if (resource.getType() == IResource.FILE) {
- extractFileProperties((IFile) resource, cvsDecoration);
- } else {
- extractContainerProperties((IContainer) resource, cvsDecoration);
+ }
+
+ public static CVSDecoration decorate(IResource resource, boolean includeDirtyCheck) throws CVSException {
+ IPreferenceStore store = CVSUIPlugin.getPlugin().getPreferenceStore();
+ ICVSResource cvsResource = CVSWorkspaceRoot.getCVSResourceFor(resource);
+ CVSDecoration cvsDecoration = new CVSDecoration();
+ cvsDecoration.setResourceType(resource.getType());
+
+ if (cvsResource.isIgnored()) {
+ cvsDecoration.setIgnored(true);
+ }
+ if (!cvsDecoration.isIgnored()) {
+ // Dirty
+ if (includeDirtyCheck) {
+ boolean computeDeepDirtyCheck = store.getBoolean(ICVSUIConstants.PREF_CALCULATE_DIRTY);
+ int type = resource.getType();
+ if (type == IResource.FILE || computeDeepDirtyCheck) {
+ cvsDecoration.setDirty(CVSLightweightDecorator.isDirty(resource));
+ }
+ }
}
+ decorate(resource, cvsDecoration);
return cvsDecoration;
}
@@ -254,6 +304,7 @@ public class CVSLightweightDecorator extends LabelProvider implements ILightweig
option = fileInfo.getKeywordMode();
}
cvsDecoration.setKeywordSubstitution(option.getShortDisplayText());
+ cvsDecoration.setWatchEditEnabled(getCVSProviderFor(resource).isWatchEditEnabled());
}
/**
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java
index 0580dd0af..816d9f040 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java
@@ -730,6 +730,9 @@ public class Utils {
public static ResourceMapping getResourceMapping(Object o) {
+ if (o instanceof ResourceMapping) {
+ return (ResourceMapping) o;
+ }
if (o instanceof IAdaptable) {
IAdaptable adaptable = (IAdaptable) o;
Object adapted = adaptable.getAdapter(ResourceMapping.class);
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/CommonViewerAdvisor.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/CommonViewerAdvisor.java
index 91e361f83..20107b556 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/CommonViewerAdvisor.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/CommonViewerAdvisor.java
@@ -20,7 +20,7 @@ import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.team.internal.ui.registry.TeamContentProviderManager;
import org.eclipse.team.internal.ui.synchronize.AbstractTreeViewerAdvisor;
import org.eclipse.team.ui.TeamUI;
-import org.eclipse.team.ui.mapping.SynchronizationLabelProvider;
+import org.eclipse.team.ui.mapping.SynchronizationStateTester;
import org.eclipse.team.ui.operations.ModelSynchronizeParticipant;
import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
import org.eclipse.ui.navigator.*;
@@ -90,7 +90,13 @@ public class CommonViewerAdvisor extends AbstractTreeViewerAdvisor implements IN
IBaseLabelProvider provider = viewer.getLabelProvider();
if (provider instanceof DecoratingLabelProvider) {
DecoratingLabelProvider dlp = (DecoratingLabelProvider) provider;
- dlp.setDecorationContext(new DecorationContext(new String[] {SynchronizationLabelProvider.SYNCHRONIZATION_AWARE_PROVIDER}));
+ DecorationContext decorationContext = new DecorationContext();
+ decorationContext.putProperty(SynchronizationStateTester.PROP_TESTER, new SynchronizationStateTester() {
+ public boolean isStateDecorationEnabled() {
+ return false;
+ }
+ });
+ dlp.setDecorationContext(decorationContext);
}
viewer.setInput(getInitialInput());
}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/mapping/SynchronizationLabelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/mapping/SynchronizationLabelProvider.java
index f96b71453..86f519a5f 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/mapping/SynchronizationLabelProvider.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/mapping/SynchronizationLabelProvider.java
@@ -37,13 +37,6 @@ public abstract class SynchronizationLabelProvider extends AbstractSynchronizati
private IResourceMappingScope scope;
private ISynchronizationContext context;
- /**
- * Context identifier used to indicate to label decorators that this label decorator
- * is synchronization state aware and will handle the application of any dirty state decoration.
- * Any label providers that use this decorator will need to include this context id in the
- * {@link IDecorationContext}.
- */
- public static final String SYNCHRONIZATION_AWARE_PROVIDER = "org.eclipse.team.ui.syncAwareLabelProvider"; //$NON-NLS-1$
private void init(IResourceMappingScope input, ISynchronizationContext context) {
this.scope = input;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/mapping/SynchronizationStateTester.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/mapping/SynchronizationStateTester.java
index ca135ceab..a52c5cee6 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/mapping/SynchronizationStateTester.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/mapping/SynchronizationStateTester.java
@@ -177,15 +177,17 @@ public class SynchronizationStateTester {
* label provider).
*
* @param element the element being tested
+ * @param deep indicates whether the team deocrator is configured to show deep or shallow decoration
+ * @param monitor a progress monitor
* @return whether the given element has an outgoing change
* @throws CoreException if an error occurs
*/
- public boolean hasOutgoingChange(Object element, boolean deep) throws CoreException {
+ public boolean hasOutgoingChange(Object element, boolean deep, IProgressMonitor monitor) throws CoreException {
if (deep) {
ResourceMapping mapping = Utils.getResourceMapping(element);
if (mapping != null) {
ResourceTraversal[] traversals = mapping.getTraversals(ResourceMappingContext.LOCAL_CONTEXT, null);
- return subscriber.hasLocalChanges(traversals, null);
+ return subscriber.hasLocalChanges(traversals, monitor);
}
} else {
IResource resource = Utils.getResource(element);

Back to the top