Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjames2002-04-09 15:04:12 +0000
committerjames2002-04-09 15:04:12 +0000
commitbaa7e11eccdcb618068eea6a23e459ce6e66aaa5 (patch)
treea6995133d49b3b18609cbb62bb1ea9900f01c3af
parentb07087cd7df198c7260da9a791dd29d1d70d73c8 (diff)
downloadeclipse.platform.team-baa7e11eccdcb618068eea6a23e459ce6e66aaa5.tar.gz
eclipse.platform.team-baa7e11eccdcb618068eea6a23e459ce6e66aaa5.tar.xz
eclipse.platform.team-baa7e11eccdcb618068eea6a23e459ce6e66aaa5.zip
Add "Compare With Base" action for folders
-rw-r--r--bundles/org.eclipse.team.cvs.ui/plugin.properties3
-rw-r--r--bundles/org.eclipse.team.cvs.ui/plugin.xml7
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithBaseAction.java84
3 files changed, 94 insertions, 0 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/plugin.properties b/bundles/org.eclipse.team.cvs.ui/plugin.properties
index 2c68103fc..cb204a262 100644
--- a/bundles/org.eclipse.team.cvs.ui/plugin.properties
+++ b/bundles/org.eclipse.team.cvs.ui/plugin.properties
@@ -37,6 +37,9 @@ CompareWithRevisionAction.tooltip=Compare with Revision on CVS Server
CompareWithTagAction.label=&Tag...
CompareWithTagAction.tooltip=Compare with Tag on CVS Server
+CompareWithBaseAction.label=&Base
+CompareWithBaseAction.tooltip=Compare with Base on CVS Server
+
CopyRepositoryNameAction.label=&Copy to Clipboard
CopyRepositoryNameAction.tooltip=Copy Repository Names to Clipboard
diff --git a/bundles/org.eclipse.team.cvs.ui/plugin.xml b/bundles/org.eclipse.team.cvs.ui/plugin.xml
index 9d5775f25..04d90e819 100644
--- a/bundles/org.eclipse.team.cvs.ui/plugin.xml
+++ b/bundles/org.eclipse.team.cvs.ui/plugin.xml
@@ -254,6 +254,13 @@
menubarPath="compareWithMenu/compareWithGroup"
id="org.eclipse.team.ccvs.ui.compareWithTag">
</action>
+ <action
+ label="%CompareWithBaseAction.label"
+ tooltip="%CompareWithBaseAction.tooltip"
+ class="org.eclipse.team.internal.ccvs.ui.actions.CompareWithBaseAction"
+ menubarPath="compareWithMenu/compareWithGroup"
+ id="org.eclipse.team.ccvs.ui.compareWithBase">
+ </action>
</objectContribution>
<objectContribution
objectClass="org.eclipse.team.ccvs.core.ICVSRemoteFolder"
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithBaseAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithBaseAction.java
new file mode 100644
index 000000000..79b4412ea
--- /dev/null
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithBaseAction.java
@@ -0,0 +1,84 @@
+package org.eclipse.team.internal.ccvs.ui.actions;
+
+/*
+ * (c) Copyright IBM Corp. 2000, 2002.
+ * All Rights Reserved.
+ */
+
+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.dialogs.MessageDialog;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.team.ccvs.core.CVSProviderPlugin;
+import org.eclipse.team.ccvs.core.CVSTag;
+import org.eclipse.team.ccvs.core.CVSTeamProvider;
+import org.eclipse.team.ccvs.core.ICVSRemoteResource;
+import org.eclipse.team.ccvs.core.ICVSResource;
+import org.eclipse.team.core.RepositoryProvider;
+import org.eclipse.team.core.TeamException;
+import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
+import org.eclipse.team.internal.ccvs.ui.CVSCompareEditorInput;
+import org.eclipse.team.internal.ccvs.ui.CVSResourceNode;
+import org.eclipse.team.internal.ccvs.ui.Policy;
+import org.eclipse.team.internal.ccvs.ui.ResourceEditionNode;
+import org.eclipse.team.ui.actions.TeamAction;
+
+/**
+ * Action for container compare with base.
+ */
+public class CompareWithBaseAction extends TeamAction {
+ /*
+ * Method declared on IActionDelegate.
+ */
+ public void run(IAction action) {
+
+ // Setup the holders
+ final IResource[] resource = new IResource[] {null};
+ final ICVSRemoteResource[] remoteResource = new ICVSRemoteResource[] { null };
+
+ // Fetch the remote tree
+ run(new IRunnableWithProgress() {
+ public void run(IProgressMonitor monitor) throws InvocationTargetException {
+ try {
+ IResource[] resources = getSelectedResources();
+ if (resources.length != 1) return;
+ resource[0] = resources[0];
+ ICVSResource cvsResource = CVSWorkspaceRoot.getCVSResourceFor(resource[0]);
+
+ monitor.beginTask(Policy.bind("CompareWithRemoteAction.fetching"), 100);
+ remoteResource[0] = CVSWorkspaceRoot.getRemoteTree(resource[0], CVSTag.BASE, Policy.subMonitorFor(monitor, 100));
+ monitor.done();
+
+ } catch (TeamException e) {
+ throw new InvocationTargetException(e);
+ }
+ }
+ }, Policy.bind("CompareWithRemoteAction.compare"), PROGRESS_DIALOG);
+
+ // Just to be safe...
+ if (remoteResource[0] == null) {
+ MessageDialog.openInformation(getShell(), Policy.bind("CompareWithRemoteAction.noRemote"), Policy.bind("CompareWithRemoteAction.noRemoteLong"));
+ return;
+ }
+
+ // Open the compare view
+ run(new IRunnableWithProgress() {
+ public void run(IProgressMonitor monitor) throws InvocationTargetException {
+ CompareUI.openCompareEditor(new CVSCompareEditorInput(new CVSResourceNode(resource[0]), new ResourceEditionNode(remoteResource[0])));
+ }
+ }, Policy.bind("CompareWithRemoteAction.compare"), PROGRESS_BUSYCURSOR);
+
+ }
+
+ protected boolean isEnabled() {
+ IResource[] resources = getSelectedResources();
+ if (resources.length != 1) return false;
+ CVSTeamProvider provider = (CVSTeamProvider)RepositoryProvider.getProvider(resources[0].getProject(), CVSProviderPlugin.getTypeId());
+ if(provider==null) return false;
+ return provider.hasRemote(resources[0]);
+ }
+}

Back to the top