Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/actions/CompareRevisionAction.java')
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/actions/CompareRevisionAction.java54
1 files changed, 54 insertions, 0 deletions
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/actions/CompareRevisionAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/actions/CompareRevisionAction.java
new file mode 100644
index 000000000..8e27059c5
--- /dev/null
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/history/actions/CompareRevisionAction.java
@@ -0,0 +1,54 @@
+package org.eclipse.team.internal.ui.history.actions;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.compare.CompareUI;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.team.core.TeamException;
+import org.eclipse.team.core.history.IFileRevision;
+import org.eclipse.team.internal.ui.TeamUIMessages;
+import org.eclipse.team.internal.ui.actions.TeamAction;
+import org.eclipse.team.internal.ui.history.CompareFileRevisionEditorInput;
+import org.eclipse.team.internal.ui.history.RevisionEditionNode;
+
+public class CompareRevisionAction extends TeamAction {
+
+ public void run(IAction action) {
+ run(new IRunnableWithProgress() {
+ public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+ try {
+ IStructuredSelection structSel = getSelection();
+ if (structSel.size() != 2)
+ return;
+
+ Object[] objArray = structSel.toArray();
+
+ IFileRevision file1 = (IFileRevision) objArray[0];
+ IFileRevision file2 = (IFileRevision) objArray[1];
+
+ RevisionEditionNode left = new RevisionEditionNode(file1);
+ RevisionEditionNode right = new RevisionEditionNode(file2);
+ CompareUI.openCompareEditorOnPage(new CompareFileRevisionEditorInput(left, right), getTargetPage());
+
+ } catch (Exception e) {
+ throw new InvocationTargetException(e);
+ }
+ }
+ }, TeamUIMessages.ConfigureProjectAction_configureProject, PROGRESS_BUSYCURSOR);
+ }
+
+ protected boolean isEnabled() throws TeamException {
+ IResource[] res = getSelectedResources();
+ int sizeofSelection = getSelection().size();
+
+ if (sizeofSelection == 2)
+ return true;
+
+ return false;
+ }
+
+}

Back to the top