diff options
author | Michael Valenta | 2005-05-09 15:14:40 +0000 |
---|---|---|
committer | Michael Valenta | 2005-05-09 15:14:40 +0000 |
commit | 106811e64f8425206cbf4335769922d10068dcc3 (patch) | |
tree | 3293f575264e6693c8b2941bfd56eaece7010bb5 | |
parent | 9878ae6cc9233cd2c69f3db96e442eb48362397d (diff) | |
download | eclipse.platform.team-106811e64f8425206cbf4335769922d10068dcc3.tar.gz eclipse.platform.team-106811e64f8425206cbf4335769922d10068dcc3.tar.xz eclipse.platform.team-106811e64f8425206cbf4335769922d10068dcc3.zip |
Bug 94115 AIOOBE on Compare With > Another Branch or Version...
2 files changed, 30 insertions, 11 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/WorkspaceTraversalAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/WorkspaceTraversalAction.java index ca7f4a5e6..fe00dd7be 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/WorkspaceTraversalAction.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/WorkspaceTraversalAction.java @@ -31,8 +31,6 @@ import org.eclipse.ui.PlatformUI; */ public abstract class WorkspaceTraversalAction extends WorkspaceAction { - private static final String SELECTED_RESOURCES_WITH_OVERLAP = "selectedResourcesWithOverlap"; //$NON-NLS-1$ - /** * Return the selected mappings that contain resources * within a CVS managed project. 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 13e98e396..6d9c9346d 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 @@ -18,11 +18,13 @@ import java.util.List; import org.eclipse.compare.CompareConfiguration; import org.eclipse.compare.structuremergeviewer.IDiffContainer; import org.eclipse.compare.structuremergeviewer.IDiffElement; +import org.eclipse.core.internal.resources.mapping.*; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.*; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.action.IAction; -import org.eclipse.jface.dialogs.*; +import org.eclipse.jface.dialogs.ErrorDialog; +import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.IStructuredSelection; @@ -393,18 +395,37 @@ public class Utils { List resources = new ArrayList(); for (int i = 0; i < elements.length; i++) { Object element = elements[i]; - IResource resource = null; + boolean isResource = false; if (element instanceof IResource) { - resource = (IResource)element; + resources.add(element); + isResource = true; } else if (element instanceof ISynchronizeModelElement){ - resource = ((ISynchronizeModelElement) element).getResource(); + resources.add(((ISynchronizeModelElement) element).getResource()); + isResource = true; + } else if (element instanceof ResourceMapping) { + try { + ResourceTraversal[] traversals = ((ResourceMapping)element).getTraversals(ResourceMappingContext.LOCAL_CONTEXT, null); + for (int k = 0; k < traversals.length; k++) { + ResourceTraversal traversal = traversals[k]; + IResource[] resourceArray = traversal.getResources(); + for (int j = 0; j < resourceArray.length; j++) { + IResource resource = resourceArray[j]; + resources.add(resource); + isResource = true; + } + } + } catch (CoreException e) { + TeamUIPlugin.log(new Status(IStatus.ERROR, TeamUIPlugin.ID, 0, "Error traversing resource mapping", e)); //$NON-NLS-1$ + } } else { - resource = (IResource)getAdapter(element, IResource.class); - if(resource != null && resource.getType() == IResource.ROOT) continue; + IResource resource = (IResource)getAdapter(element, IResource.class); + if(resource != null) { + if (resource.getType() == IResource.ROOT) continue; + resources.add(resource); + isResource = true; + } } - if (resource != null) { - resources.add(resource); - } else { + if (!isResource) { if(nonResources != null) nonResources.add(element); } |