diff options
author | Tomasz Zarna | 2010-01-12 15:41:15 +0000 |
---|---|---|
committer | Tomasz Zarna | 2010-01-12 15:41:15 +0000 |
commit | 8c5b24c83bd600f2efeae6c74a48c89867138d57 (patch) | |
tree | d6d580d82dc1caefd9e6eb29323209acaef80714 | |
parent | fea52a74ae84d9b7040eb49d8664c0ae85161094 (diff) | |
download | eclipse.platform.team-8c5b24c83bd600f2efeae6c74a48c89867138d57.tar.gz eclipse.platform.team-8c5b24c83bd600f2efeae6c74a48c89867138d57.tar.xz eclipse.platform.team-8c5b24c83bd600f2efeae6c74a48c89867138d57.zip |
bug 298923: [Sync View][Apply patch] Merge changes from dev branch back to HEAD -- Ongoing work.
13 files changed, 168 insertions, 67 deletions
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/HunkDiffNode.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/HunkDiffNode.java index 5515a7ee1..c0cb6610d 100644 --- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/HunkDiffNode.java +++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/HunkDiffNode.java @@ -14,6 +14,7 @@ import org.eclipse.compare.ITypedElement; import org.eclipse.compare.internal.core.patch.HunkResult; import org.eclipse.compare.patch.PatchConfiguration; import org.eclipse.compare.structuremergeviewer.Differencer; +import org.eclipse.core.resources.IResource; public class HunkDiffNode extends PatchDiffNode { @@ -101,4 +102,7 @@ public class HunkDiffNode extends PatchDiffNode { return false; } + public IResource getResource() { + return ((PatchFileDiffNode)getParent()).getResource(); + } } diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchDiffNode.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchDiffNode.java index 89e9f1f81..ea4ba2de8 100644 --- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchDiffNode.java +++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchDiffNode.java @@ -10,11 +10,14 @@ *******************************************************************************/ package org.eclipse.compare.internal.patch; +import org.eclipse.compare.IResourceProvider; import org.eclipse.compare.ITypedElement; import org.eclipse.compare.patch.PatchConfiguration; -import org.eclipse.compare.structuremergeviewer.*; +import org.eclipse.compare.structuremergeviewer.DiffNode; +import org.eclipse.compare.structuremergeviewer.IDiffContainer; +import org.eclipse.core.resources.IResource; -public abstract class PatchDiffNode extends DiffNode { +public abstract class PatchDiffNode extends DiffNode implements IResourceProvider { private Object fElement; @@ -59,4 +62,7 @@ public abstract class PatchDiffNode extends DiffNode { return getPatchElement().hashCode(); } + public IResource getResource() { + return null; + } } diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchFileDiffNode.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchFileDiffNode.java index 8149140ea..922ce5d7a 100644 --- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchFileDiffNode.java +++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchFileDiffNode.java @@ -10,12 +10,17 @@ *******************************************************************************/ package org.eclipse.compare.internal.patch; -import org.eclipse.compare.*; -import org.eclipse.compare.internal.core.patch.FilePatch2; +import org.eclipse.compare.IContentChangeListener; +import org.eclipse.compare.IContentChangeNotifier; +import org.eclipse.compare.ITypedElement; import org.eclipse.compare.internal.core.patch.FileDiffResult; +import org.eclipse.compare.internal.core.patch.FilePatch2; import org.eclipse.compare.patch.PatchConfiguration; -import org.eclipse.compare.structuremergeviewer.*; -import org.eclipse.core.resources.IFile; +import org.eclipse.compare.structuremergeviewer.DiffNode; +import org.eclipse.compare.structuremergeviewer.Differencer; +import org.eclipse.compare.structuremergeviewer.IDiffContainer; +import org.eclipse.compare.structuremergeviewer.IDiffElement; +import org.eclipse.core.resources.IResource; public class PatchFileDiffNode extends PatchDiffNode implements IContentChangeListener { @@ -110,8 +115,11 @@ public class PatchFileDiffNode extends PatchDiffNode implements IContentChangeLi } public boolean fileExists() { - IFile file = ((WorkspaceFileDiffResult)getDiffResult()).getTargetFile(); + IResource file = getResource(); return file != null && file.isAccessible(); } + public IResource getResource() { + return ((WorkspaceFileDiffResult)getDiffResult()).getTargetFile(); + } } diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchProjectDiffNode.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchProjectDiffNode.java index 2f8f58a69..dd2285df2 100644 --- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchProjectDiffNode.java +++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchProjectDiffNode.java @@ -14,7 +14,11 @@ import org.eclipse.compare.CompareUI; import org.eclipse.compare.ITypedElement; import org.eclipse.compare.internal.core.patch.DiffProject; import org.eclipse.compare.patch.PatchConfiguration; -import org.eclipse.compare.structuremergeviewer.*; +import org.eclipse.compare.structuremergeviewer.Differencer; +import org.eclipse.compare.structuremergeviewer.IDiffContainer; +import org.eclipse.compare.structuremergeviewer.IDiffElement; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.jface.resource.LocalResourceManager; import org.eclipse.swt.graphics.Image; @@ -76,4 +80,8 @@ public class PatchProjectDiffNode extends PatchDiffNode { return project; } + public IResource getResource() { + return ResourcesPlugin.getWorkspace().getRoot().getProject(getDiffProject().getName()); + } + } diff --git a/bundles/org.eclipse.team.ui/plugin.xml b/bundles/org.eclipse.team.ui/plugin.xml index 54bda73d3..4ebd62591 100644 --- a/bundles/org.eclipse.team.ui/plugin.xml +++ b/bundles/org.eclipse.team.ui/plugin.xml @@ -593,11 +593,11 @@ <modelProvider class="org.eclipse.team.internal.ui.synchronize.patch.PatchModelProvider"/> <extends-model id="org.eclipse.core.resources.modelProvider"/> - <enablement> + <!--enablement> <instanceof value="org.eclipse.core.resources.IResource"> </instanceof> - </enablement> + </enablement--> </extension> <extension point="org.eclipse.ui.navigator.navigatorContent"> @@ -611,14 +611,14 @@ policy="InvokeAlwaysRegardlessOfSuppressedExt" suppressedExtensionId="org.eclipse.team.ui.resourceContent"> </override> - <triggerPoints> + <enablement> <or> - <instanceof + <!--instanceof value="org.eclipse.team.core.mapping.ISynchronizationScope"> </instanceof> <instanceof value="org.eclipse.team.core.mapping.ISynchronizationContext"> - </instanceof> + </instanceof--> <instanceof value="org.eclipse.team.internal.ui.synchronize.patch.PatchWorkspace"> </instanceof> @@ -627,9 +627,12 @@ </instanceof> <instanceof value="org.eclipse.team.internal.ui.synchronize.patch.PatchModelProvider"> + </instanceof> + <instanceof + value="org.eclipse.core.resources.IResource"> </instanceof> </or> - </triggerPoints> + </enablement> </navigatorContent> </extension> <extension diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ModelCompareEditorInput.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ModelCompareEditorInput.java index 534d8c016..54ea848a6 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ModelCompareEditorInput.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/mapping/ModelCompareEditorInput.java @@ -189,7 +189,7 @@ public class ModelCompareEditorInput extends SaveableCompareEditorInput implemen } protected void handleMenuAboutToShow(IMenuManager manager) { - StructuredSelection selection = new StructuredSelection(((ResourceDiffCompareInput)getCompareInput()).getResource()); + StructuredSelection selection = new StructuredSelection(((IResourceProvider)getCompareInput()).getResource()); final ResourceMarkAsMergedHandler markAsMergedHandler = new ResourceMarkAsMergedHandler(getSynchronizeConfiguration()); markAsMergedHandler.updateEnablement(selection); Action markAsMergedAction = new Action(TeamUIMessages.ModelCompareEditorInput_0) { diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/ApplyPatchModelSynchronizeParticipant.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/ApplyPatchModelSynchronizeParticipant.java index c9f56a38e..4d4d92bd2 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/ApplyPatchModelSynchronizeParticipant.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/ApplyPatchModelSynchronizeParticipant.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 IBM Corporation and others. + * Copyright (c) 2009, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -10,8 +10,10 @@ *******************************************************************************/ package org.eclipse.team.internal.ui.synchronize.patch; +import org.eclipse.core.resources.mapping.ModelProvider; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IMenuManager; import org.eclipse.team.core.mapping.provider.SynchronizationContext; import org.eclipse.team.ui.TeamUI; import org.eclipse.team.ui.mapping.SynchronizationActionProvider; @@ -56,16 +58,39 @@ public class ApplyPatchModelSynchronizeParticipant extends protected void configureMergeAction(String mergeActionId, Action action) { if (mergeActionId == SynchronizationActionProvider.MERGE_ACTION_ID) { // Custom label for merge - action.setText("Apply (merge)"); //$NON-NLS-1$ - } else if (mergeActionId == SynchronizationActionProvider.OVERWRITE_ACTION_ID) { - // Custom label for overwrite - action.setText("Apply (overwrite)"); //$NON-NLS-1$ - } else if (mergeActionId == SynchronizationActionProvider.MARK_AS_MERGE_ACTION_ID) { - // Custom label for mark-as-merged - action.setText("Exclude"); //$NON-NLS-1$ + action.setText("Apply"); //$NON-NLS-1$ } else { super.configureMergeAction(mergeActionId, action); } } + protected void addToContextMenu(String mergeActionId, Action action, IMenuManager manager) { + if (mergeActionId == SynchronizationActionProvider.OVERWRITE_ACTION_ID) { + // omit this action + return; + } else if (mergeActionId == SynchronizationActionProvider.MARK_AS_MERGE_ACTION_ID) { + // omit this action + return; + } + super.addToContextMenu(mergeActionId, action, manager); + } + } + + public ModelProvider[] getEnabledModelProviders() { + ModelProvider[] enabledProviders = super.getEnabledModelProviders(); + // add Patch model provider if it's not there + for (int i = 0; i < enabledProviders.length; i++) { + ModelProvider provider = enabledProviders[i]; + if (provider.getId().equals(PatchModelProvider.ID)) + return enabledProviders; + } + ModelProvider[] extended = new ModelProvider[enabledProviders.length + 1]; + for (int i = 0; i < enabledProviders.length; i++) { + extended[i] = enabledProviders[i]; + } + PatchModelProvider provider = PatchModelProvider.getProvider(); + if (provider == null) + return enabledProviders; + extended[extended.length - 1] = provider; + return extended; } } diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/ApplyPatchSubscriber.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/ApplyPatchSubscriber.java index 7e81fbbf6..b3373ecbb 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/ApplyPatchSubscriber.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/ApplyPatchSubscriber.java @@ -34,6 +34,7 @@ public class ApplyPatchSubscriber extends Subscriber { this.patcher = patcher; this.comparator = new PatchedFileVariantComparator(); getPatcher().refresh(); + // FIXME: create instance, singleton PatchWorkspace.create(ResourcesPlugin.getWorkspace().getRoot(), getPatcher()); } diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchCompareAdapter.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchCompareAdapter.java index 50c435bac..f4f2802c0 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchCompareAdapter.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchCompareAdapter.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 IBM Corporation and others. + * Copyright (c) 2009, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -11,12 +11,15 @@ package org.eclipse.team.internal.ui.synchronize.patch; import org.eclipse.compare.structuremergeviewer.ICompareInput; -import org.eclipse.core.resources.mapping.ResourceMapping; +import org.eclipse.core.resources.mapping.*; import org.eclipse.team.core.mapping.ISynchronizationContext; +import org.eclipse.team.core.mapping.ISynchronizationScope; +import org.eclipse.team.internal.ui.mapping.DiffTreeChangesSection.ITraversalFactory; import org.eclipse.team.ui.mapping.SynchronizationCompareAdapter; import org.eclipse.ui.IMemento; -public class PatchCompareAdapter extends SynchronizationCompareAdapter { +public class PatchCompareAdapter extends SynchronizationCompareAdapter + implements ITraversalFactory { public ICompareInput asCompareInput(ISynchronizationContext context, Object o) { @@ -26,13 +29,15 @@ public class PatchCompareAdapter extends SynchronizationCompareAdapter { } public void save(ResourceMapping[] mappings, IMemento memento) { - // TODO Auto-generated method stub - + // Don't save } public ResourceMapping[] restore(IMemento memento) { - // TODO Auto-generated method stub + // Don't restore return null; } + public ResourceTraversal[] getTraversals(ISynchronizationScope scope) { + return scope.getTraversals(ModelProvider.RESOURCE_MODEL_PROVIDER_ID); + } } diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchModelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchModelProvider.java index b662cb78f..24140bcb4 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchModelProvider.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchModelProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 IBM Corporation and others. + * Copyright (c) 2009, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -13,11 +13,11 @@ package org.eclipse.team.internal.ui.synchronize.patch; import org.eclipse.compare.internal.core.patch.FileDiffResult; import org.eclipse.compare.internal.patch.*; import org.eclipse.compare.structuremergeviewer.IDiffElement; -import org.eclipse.core.resources.*; -import org.eclipse.core.resources.mapping.*; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.mapping.ModelProvider; +import org.eclipse.core.resources.mapping.ResourceMapping; import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.team.core.subscribers.SubscriberResourceMappingContext; import org.eclipse.team.internal.core.TeamPlugin; public class PatchModelProvider extends ModelProvider { @@ -38,6 +38,7 @@ public class PatchModelProvider extends ModelProvider { return provider; } + /* public ResourceMapping[] getMappings(IResource resource, ResourceMappingContext context, IProgressMonitor monitor) throws CoreException { @@ -55,7 +56,7 @@ public class PatchModelProvider extends ModelProvider { } } return super.getMappings(resource, context, monitor); - } + }*/ static ResourceMapping getResourceMapping(IDiffElement object) { if (object instanceof PatchProjectDiffNode) { @@ -102,4 +103,34 @@ public class PatchModelProvider extends ModelProvider { } return null; } + + /** + * Returns the resource associated with the corresponding model element. + * + * @param element + * the model element + * @return the associated resource, or <code>null</code> + */ + static IResource getResource(final Object element) { + IResource resource= null; + if (element instanceof PatchProjectDiffNode) { + return ((PatchProjectDiffNode) element).getResource(); + } else if (element instanceof PatchFileDiffNode) { + return ((PatchFileDiffNode) element).getResource(); + } else if (element instanceof HunkDiffNode) { + return ((HunkDiffNode) element).getResource(); + } /*else if (element instanceof IResource) { + resource= (IResource) element; + } else if (element instanceof IAdaptable) { + final IAdaptable adaptable= (IAdaptable) element; + final Object adapted= adaptable.getAdapter(IResource.class); + if (adapted instanceof IResource) + resource= (IResource) adapted; + } else { + final Object adapted= Platform.getAdapterManager().getAdapter(element, IResource.class); + if (adapted instanceof IResource) + resource= (IResource) adapted; + }*/ + return resource; + } } diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchSyncContentProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchSyncContentProvider.java index 95890e804..d4c96a5c4 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchSyncContentProvider.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchSyncContentProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 IBM Corporation and others. + * Copyright (c) 2009, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -67,20 +67,15 @@ public class PatchSyncContentProvider extends SynchronizationContentProvider */ protected ResourceTraversal[] getTraversals( ISynchronizationContext context, Object object) { - - ResourceMapping mapping = PatchModelProvider.getResourceMapping((IDiffElement) object); - ResourceMappingContext rmc = new SynchronizationResourceMappingContext( - context); - try { - // XXX: - // Technically speaking, this may end up being too long - // running for this - // (i.e. we may end up hitting the server) but it will do - // for illustration purposes - return mapping - .getTraversals(rmc, new NullProgressMonitor()); - } catch (CoreException e) { - TeamUIPlugin.log(e); + if (object instanceof IDiffElement) { + ResourceMapping mapping = PatchModelProvider.getResourceMapping((IDiffElement) object); + ResourceMappingContext rmc = new SynchronizationResourceMappingContext( + context); + try { + return mapping.getTraversals(rmc, new NullProgressMonitor()); + } catch (CoreException e) { + TeamUIPlugin.log(e); + } } return new ResourceTraversal[0]; } @@ -93,7 +88,7 @@ public class PatchSyncContentProvider extends SynchronizationContentProvider sb.append(children[i].toString()).append(","); //$NON-NLS-1$ } System.out - .println(">> [super] PatchSyncContentProvider.getChildrenInContext: context-> " + context + "parent-> " + parent.toString() + "; children-> " + sb.toString()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + .println(">> [super] PatchSyncContentProvider.getChildrenInContext: context-> " + context + "; parent-> " + parent.toString() + "; children-> " + sb.toString()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ return super.getChildrenInContext(context, parent, children); } @@ -102,9 +97,11 @@ public class PatchSyncContentProvider extends SynchronizationContentProvider } public void getPipelinedElements(Object anInput, Set theCurrentElements) { - // Replace any model projects with a DiffProject if the input - // is a synchronization context if (anInput instanceof ISynchronizationContext) { + // Do not show hunks when all models are visible + //XXX + return; + } else if (anInput == getModelProvider()) { List newProjects = new ArrayList(); for (Iterator iter = theCurrentElements.iterator(); iter.hasNext();) { Object element = iter.next(); @@ -128,7 +125,7 @@ public class PatchSyncContentProvider extends SynchronizationContentProvider theCurrentElements.add(getModelProvider()); } } - + public Object getPipelinedParent(Object anObject, Object aSuggestedParent) { // TODO Auto-generated method stub System.out @@ -161,4 +158,14 @@ public class PatchSyncContentProvider extends SynchronizationContentProvider .println(">> [false] PatchSyncContentProvider.interceptUpdate: anUpdateSynchronization-> " + anUpdateSynchronization); //$NON-NLS-1$ return false; } + + protected boolean isInScope(ISynchronizationScope scope, Object parent, + Object element) { + final IResource resource = PatchModelProvider.getResource(element); + if (resource == null) + return false; + if (scope.contains(resource)) + return true; + return false; + } } diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchSyncLabelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchSyncLabelProvider.java index bf1b378ff..ab159e95b 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchSyncLabelProvider.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/patch/PatchSyncLabelProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 IBM Corporation and others. + * Copyright (c) 2009, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -15,6 +15,7 @@ import org.eclipse.compare.structuremergeviewer.IDiffElement; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.mapping.ResourceMapping; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.swt.graphics.Image; import org.eclipse.team.core.diff.IDiff; @@ -47,16 +48,18 @@ public class PatchSyncLabelProvider extends SynchronizationLabelProvider { } protected IDiff getDiff(Object element) { - ResourceMapping mapping = PatchModelProvider - .getResourceMapping((IDiffElement) element); - if (mapping != null) { - // XXX: getting IResource for patch model object - try { - IResource resource = mapping.getTraversals(null, null)[0] - .getResources()[0]; - return getContext().getDiffTree().getDiff(resource); - } catch (CoreException e) { - TeamUIPlugin.log(e); + if (element instanceof IDiffElement) { + ResourceMapping mapping = PatchModelProvider + .getResourceMapping((IDiffElement) element); + if (mapping != null) { + // XXX: getting IResource for patch model object + try { + IResource resource = mapping.getTraversals(null, new NullProgressMonitor())[0] + .getResources()[0]; + return getContext().getDiffTree().getDiff(resource); + } catch (CoreException e) { + TeamUIPlugin.log(e); + } } } return super.getDiff(element); diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/ModelSynchronizeParticipantActionGroup.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/ModelSynchronizeParticipantActionGroup.java index f0a4821b7..4b3969183 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/ModelSynchronizeParticipantActionGroup.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/ModelSynchronizeParticipantActionGroup.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2007 IBM Corporation and others. + * Copyright (c) 2005, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -49,7 +49,7 @@ public class ModelSynchronizeParticipantActionGroup extends SynchronizePageActio /** * The id of the action group that determines where the other - * actions (e.g. mark-as-mered) appear in the context menu. + * actions (e.g. mark-as-merged) appear in the context menu. */ public static final String OTHER_ACTION_GROUP = "other"; //$NON-NLS-1$ |