diff options
Diffstat (limited to 'bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceModelProviderOperation.java')
-rw-r--r-- | bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceModelProviderOperation.java | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceModelProviderOperation.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceModelProviderOperation.java index 68ebde467..40dea788e 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceModelProviderOperation.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ResourceModelProviderOperation.java @@ -16,7 +16,6 @@ import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.mapping.*; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.team.core.diff.*; import org.eclipse.team.core.mapping.IResourceDiffTree; import org.eclipse.team.core.mapping.ISynchronizationContext; @@ -27,21 +26,24 @@ import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration; public abstract class ResourceModelProviderOperation extends ModelProviderOperation { - protected ResourceModelProviderOperation(ISynchronizePageConfiguration configuration) { + private final Object[] elements; + + protected ResourceModelProviderOperation(ISynchronizePageConfiguration configuration, Object[] elements) { super(configuration); + this.elements = elements; } /** * Return the file deltas that are either contained in the selection * or are children of the selection and visible given the current * mode of the page configuration. - * @param selection the selected + * @param elements the selected elements * @return the file deltas contained in or descended from the selection */ - protected IDiffNode[] getFileDeltas(IStructuredSelection selection) { + protected IDiffNode[] getFileDeltas(Object[] elements) { Set result = new HashSet(); - for (Iterator iter = selection.iterator(); iter.hasNext();) { - Object element = iter.next(); + for (int j = 0; j < elements.length; j++) { + Object element = elements[j]; IDiffNode[] diffs = getFileDeltas(element); for (int i = 0; i < diffs.length; i++) { IDiffNode node = diffs[i]; @@ -136,4 +138,16 @@ public abstract class ResourceModelProviderOperation extends ModelProviderOperat */ protected abstract FastDiffNodeFilter getDiffFilter(); + public Object[] getElements() { + return elements; + } + + /* (non-Javadoc) + * @see org.eclipse.team.ui.mapping.ModelProviderOperation#shouldRun() + */ + public boolean shouldRun() { + // TODO: may be too long for enablement + return getFileDeltas(getElements()).length > 0; + } + } |