diff options
author | lgoubet | 2019-02-26 09:08:17 +0000 |
---|---|---|
committer | lgoubet | 2019-02-26 09:30:39 +0000 |
commit | 6ec3f5e0a0074c28870f665dcc1e4b77e0a8699f (patch) | |
tree | 6b764f7ac243348437246764f3df3a40dee777d4 | |
parent | 0edc017f5f960cc7da60807c24df270d933cd946 (diff) | |
download | org.eclipse.emf.compare-6ec3f5e0a0074c28870f665dcc1e4b77e0a8699f.tar.gz org.eclipse.emf.compare-6ec3f5e0a0074c28870f665dcc1e4b77e0a8699f.tar.xz org.eclipse.emf.compare-6ec3f5e0a0074c28870f665dcc1e4b77e0a8699f.zip |
patch ModelGitMergeEditorInput for EGit 5.3.0 compatibility
This applies the same patch as was done for bug 543495 to EMF
Compare's ModelGitMergeEditorInput.
Bug: 544761
Bug: 543495
Change-Id: I7f916e88a0200d8b552dd353c9278f0e619c800c
-rw-r--r-- | plugins/org.eclipse.emf.compare.egit.ui/src/org/eclipse/emf/compare/egit/ui/internal/merge/ModelGitMergeEditorInput.java | 63 |
1 files changed, 32 insertions, 31 deletions
diff --git a/plugins/org.eclipse.emf.compare.egit.ui/src/org/eclipse/emf/compare/egit/ui/internal/merge/ModelGitMergeEditorInput.java b/plugins/org.eclipse.emf.compare.egit.ui/src/org/eclipse/emf/compare/egit/ui/internal/merge/ModelGitMergeEditorInput.java index ed5352fae..2c3ab1cf8 100644 --- a/plugins/org.eclipse.emf.compare.egit.ui/src/org/eclipse/emf/compare/egit/ui/internal/merge/ModelGitMergeEditorInput.java +++ b/plugins/org.eclipse.emf.compare.egit.ui/src/org/eclipse/emf/compare/egit/ui/internal/merge/ModelGitMergeEditorInput.java @@ -26,6 +26,7 @@ import java.util.Set; import org.eclipse.compare.CompareConfiguration; import org.eclipse.compare.CompareEditorInput; +import org.eclipse.compare.IResourceProvider; import org.eclipse.compare.ITypedElement; import org.eclipse.compare.structuremergeviewer.DiffNode; import org.eclipse.compare.structuremergeviewer.Differencer; @@ -51,7 +52,6 @@ import org.eclipse.egit.core.internal.indexdiff.IndexDiffCacheEntry; import org.eclipse.egit.core.internal.indexdiff.IndexDiffData; import org.eclipse.egit.core.internal.job.RuleUtil; import org.eclipse.egit.core.internal.storage.GitFileRevision; -import org.eclipse.egit.core.internal.storage.WorkingTreeFileRevision; import org.eclipse.egit.core.internal.util.ResourceUtil; import org.eclipse.egit.core.project.RepositoryMapping; import org.eclipse.egit.ui.Activator; @@ -60,9 +60,9 @@ import org.eclipse.egit.ui.internal.UIText; import org.eclipse.egit.ui.internal.revision.EditableRevision; import org.eclipse.egit.ui.internal.revision.FileRevisionTypedElement; import org.eclipse.egit.ui.internal.revision.GitCompareFileRevisionEditorInput.EmptyTypedElement; -import org.eclipse.egit.ui.internal.revision.LocalFileRevision; import org.eclipse.egit.ui.internal.revision.LocationEditableRevision; import org.eclipse.egit.ui.internal.revision.ResourceEditableRevision; +import org.eclipse.egit.ui.internal.synchronize.compare.LocalNonWorkspaceTypedElement; import org.eclipse.emf.compare.egit.internal.merge.DirCacheResourceVariantTreeProvider; import org.eclipse.emf.compare.egit.internal.merge.GitResourceVariantTreeProvider; import org.eclipse.emf.compare.egit.internal.merge.GitResourceVariantTreeSubscriber; @@ -101,6 +101,7 @@ import org.eclipse.team.core.subscribers.SubscriberMergeContext; import org.eclipse.team.core.subscribers.SubscriberResourceMappingContext; import org.eclipse.team.core.subscribers.SubscriberScopeManager; import org.eclipse.team.ui.mapping.ISynchronizationCompareAdapter; +import org.eclipse.team.ui.synchronize.SaveableCompareEditorInput; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.ide.IDE.SharedImages; @@ -147,9 +148,9 @@ public class ModelGitMergeEditorInput extends CompareEditorInput { if (selectedEdition instanceof DiffNode) { DiffNode diffNode = (DiffNode)selectedEdition; ITypedElement element = diffNode.getLeft(); - if (element instanceof ResourceEditableRevision) { - ResourceEditableRevision resourceRevision = (ResourceEditableRevision)element; - return resourceRevision.getFile(); + if (element instanceof IResourceProvider) { + IResource resource = ((IResourceProvider)element).getResource(); + return resource; } } } @@ -590,39 +591,41 @@ public class ModelGitMergeEditorInput extends CompareEditorInput { continue; } + ITypedElement left; IFileRevision rev; // if the file is not conflicting (as it was auto-merged) // we will show the auto-merged (local) version Path repositoryPath = new Path(repository.getWorkTree().getAbsolutePath()); IPath location = repositoryPath.append(fit.getEntryPathString()); + assert location != null; + IFile file = ResourceUtil.getFileForLocation(location, false); if (!conflicting || useWorkspace) { if (file != null) { - rev = new LocalFileRevision(file); + left = SaveableCompareEditorInput.createFileElement(file); } else { - rev = new WorkingTreeFileRevision(location.toFile()); + left = new LocalNonWorkspaceTypedElement(repository, location); } } else { rev = GitFileRevision.inIndex(repository, gitPath, DirCacheEntry.STAGE_2); - } - - IRunnableContext runnableContext = getContainer(); - if (runnableContext == null) { - runnableContext = PlatformUI.getWorkbench().getProgressService(); - } - EditableRevision leftEditable; - if (file != null) { - leftEditable = new ResourceEditableRevision(rev, file, runnableContext); - } else { - leftEditable = new LocationEditableRevision(rev, location, runnableContext); - } - // make sure we don't need a round trip later - try { - leftEditable.cacheContents(monitor); - } catch (CoreException e) { - throw new IOException(e.getMessage()); + IRunnableContext runnableContext = getContainer(); + if (runnableContext == null) { + runnableContext = PlatformUI.getWorkbench().getProgressService(); + assert runnableContext != null; + } + if (file != null) { + left = new ResourceEditableRevision(rev, file, runnableContext); + } else { + left = new LocationEditableRevision(rev, location, runnableContext); + } + // make sure we don't need a round trip later + try { + ((EditableRevision)left).cacheContents(monitor); + } catch (CoreException e) { + throw new IOException(e.getMessage()); + } } int kind = Differencer.NO_CHANGE; @@ -634,19 +637,17 @@ public class ModelGitMergeEditorInput extends CompareEditorInput { IDiffContainer fileParent = getFileParent(result, repositoryPath, file, location); - ITypedElement anc; + ITypedElement ancestor = null; if (ancestorCommit != null) { - anc = CompareUtils.getFileRevisionTypedElement(gitPath, ancestorCommit, repository); - } else { - anc = null; + ancestor = CompareUtils.getFileRevisionTypedElement(gitPath, ancestorCommit, repository); } // we get an ugly black icon if we have an EmptyTypedElement // instead of null - if (anc instanceof EmptyTypedElement) { - anc = null; + if (ancestor instanceof EmptyTypedElement) { + ancestor = null; } // create the node as child - new DiffNode(fileParent, kind, anc, leftEditable, right); + new DiffNode(fileParent, kind, ancestor, left, right); } return result; } |