diff options
author | james | 2002-04-09 15:04:12 +0000 |
---|---|---|
committer | james | 2002-04-09 15:04:12 +0000 |
commit | baa7e11eccdcb618068eea6a23e459ce6e66aaa5 (patch) | |
tree | a6995133d49b3b18609cbb62bb1ea9900f01c3af | |
parent | b07087cd7df198c7260da9a791dd29d1d70d73c8 (diff) | |
download | eclipse.platform.team-baa7e11eccdcb618068eea6a23e459ce6e66aaa5.tar.gz eclipse.platform.team-baa7e11eccdcb618068eea6a23e459ce6e66aaa5.tar.xz eclipse.platform.team-baa7e11eccdcb618068eea6a23e459ce6e66aaa5.zip |
Add "Compare With Base" action for folders
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]); + } +} |