diff options
author | Jean Michel-Lemieux | 2004-03-12 20:39:03 +0000 |
---|---|---|
committer | Jean Michel-Lemieux | 2004-03-12 20:39:03 +0000 |
commit | 63374c3200e725bdae72759de3fb7b2e25ab17ed (patch) | |
tree | 5cbc5d6a0e82135a99d3f250aea913e9ee415d85 /bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs | |
parent | 7178a060534b68a62430a540b8459a7b202457c3 (diff) | |
download | eclipse.platform.team-63374c3200e725bdae72759de3fb7b2e25ab17ed.tar.gz eclipse.platform.team-63374c3200e725bdae72759de3fb7b2e25ab17ed.tar.xz eclipse.platform.team-63374c3200e725bdae72759de3fb7b2e25ab17ed.zip |
Adding changes for compare in dialog and global sync action.
Diffstat (limited to 'bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs')
9 files changed, 52 insertions, 158 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRemoteAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRemoteAction.java index f36c5a974..190e50920 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRemoteAction.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRemoteAction.java @@ -13,12 +13,16 @@ package org.eclipse.team.internal.ccvs.ui.actions; import java.lang.reflect.InvocationTargetException; import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.jface.action.IAction; +import org.eclipse.team.core.subscribers.FilteredSyncInfoCollector; +import org.eclipse.team.core.synchronize.*; import org.eclipse.team.internal.ccvs.core.CVSException; import org.eclipse.team.internal.ccvs.core.ICVSResource; import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin; +import org.eclipse.team.internal.ccvs.ui.Policy; import org.eclipse.team.internal.ccvs.ui.subscriber.WorkspaceSynchronizeParticipant; -import org.eclipse.team.ui.synchronize.subscriber.SubscriberParticipantDialog; /** * This action shows the CVS workspace participant into a model dialog. For single file @@ -27,15 +31,37 @@ import org.eclipse.team.ui.synchronize.subscriber.SubscriberParticipantDialog; * @since 3.0 */ public class CompareWithRemoteAction extends WorkspaceAction { - + public void execute(IAction action) throws InvocationTargetException, InterruptedException { final IResource[] resources = getSelectedResources(); + SyncInfoFilter contentComparison = new SyncInfoFilter() { + private SyncInfoFilter contentCompare = new SyncInfoFilter.ContentComparisonSyncInfoFilter(); + public boolean select(SyncInfo info, IProgressMonitor monitor) { + // Want to select infos whose contents do not match + boolean different = !contentCompare.select(info, monitor); + if(different) { + for (int i = 0; i < resources.length; i++) { + IResource resource = resources[i]; + if (resource.getFullPath().isPrefixOf(info.getLocal().getFullPath())) { + return true; + } + } + } + return false; + } + }; + // Show the 3-way comparison in a model dialog WorkspaceSynchronizeParticipant participant = CVSUIPlugin.getPlugin().getCvsWorkspaceSynchronizeParticipant(); - SubscriberParticipantDialog openCompare = new SubscriberParticipantDialog(getShell(), participant.getId(), participant, resources); - openCompare.setRememberInSyncView(false); - openCompare.run(); + SyncInfoTree syncInfoSet = new SyncInfoTree(); + + FilteredSyncInfoCollector collector = new FilteredSyncInfoCollector( + participant.getSubscriberSyncInfoCollector().getSubscriberSyncInfoSet(), + syncInfoSet, + contentComparison); + collector.start(new NullProgressMonitor()); + participant.refresh(resources, participant.getRefreshListeners().createModalDialogListener(participant.getId(), participant, syncInfoSet), Policy.bind("Participant.comparing"), null); } /* diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithTagAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithTagAction.java index 3dfd3c3e8..cc6f9ef36 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithTagAction.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithTagAction.java @@ -17,9 +17,9 @@ import org.eclipse.core.resources.IResource; import org.eclipse.jface.action.IAction; import org.eclipse.team.internal.ccvs.core.CVSCompareSubscriber; import org.eclipse.team.internal.ccvs.core.CVSTag; +import org.eclipse.team.internal.ccvs.ui.Policy; import org.eclipse.team.internal.ccvs.ui.TagSelectionDialog; import org.eclipse.team.internal.ccvs.ui.subscriber.CompareParticipant; -import org.eclipse.team.ui.synchronize.subscriber.SubscriberParticipantDialog; public class CompareWithTagAction extends WorkspaceAction { @@ -32,8 +32,10 @@ public class CompareWithTagAction extends WorkspaceAction { // Run the comparison CVSCompareSubscriber s = new CVSCompareSubscriber(resources, tag); CompareParticipant participant = new CompareParticipant(s); - SubscriberParticipantDialog openCompare = new SubscriberParticipantDialog(getShell(), CVSCompareSubscriber.ID_MODAL, participant, resources); - openCompare.run(); + participant.refresh(resources, + participant.getRefreshListeners().createModalDialogListener(CVSCompareSubscriber.ID_MODAL, participant, participant.getSubscriberSyncInfoCollector().getSyncInfoTree()), + Policy.bind("Participant.comparing"), //$NON-NLS-1$ + null); } protected CVSTag promptForTag(IResource[] resources) { diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java index 0e5688de6..6bf107d27 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java @@ -14,13 +14,15 @@ import java.lang.reflect.InvocationTargetException; import org.eclipse.core.resources.IResource; import org.eclipse.jface.action.IAction; +import org.eclipse.jface.wizard.IWizard; +import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.team.internal.ccvs.core.CVSException; import org.eclipse.team.internal.ccvs.core.ICVSResource; import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin; import org.eclipse.team.internal.ccvs.ui.subscriber.WorkspaceSynchronizeParticipant; /** - * Action for catchup/release in popup menus. + * Action to initiate a CVS workspace synchronize */ public class SyncAction extends WorkspaceAction { @@ -30,7 +32,9 @@ public class SyncAction extends WorkspaceAction { WorkspaceSynchronizeParticipant participant = CVSUIPlugin.getPlugin().getCvsWorkspaceSynchronizeParticipant(); if(participant != null) { - participant.refresh(resources); + IWizard wizard = participant.createSynchronizeWizard(); + WizardDialog dialog = new WizardDialog(getShell(), wizard); + dialog.open(); } } diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeWizard.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeWizard.java index f6a553be7..df8ddb41b 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeWizard.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeWizard.java @@ -11,22 +11,16 @@ package org.eclipse.team.internal.ccvs.ui.merge; -import org.eclipse.compare.CompareEditorInput; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; -import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.wizard.Wizard; -import org.eclipse.swt.widgets.Shell; import org.eclipse.team.internal.ccvs.core.CVSMergeSubscriber; import org.eclipse.team.internal.ccvs.core.CVSTag; import org.eclipse.team.internal.ccvs.ui.*; import org.eclipse.team.internal.ccvs.ui.subscriber.MergeSynchronizeParticipant; -import org.eclipse.team.ui.synchronize.subscriber.SubscriberParticipantDialog; +import org.eclipse.team.ui.synchronize.subscriber.IRefreshSubscriberListener; import org.eclipse.team.ui.synchronize.subscriber.SubscriberParticipant; -import org.eclipse.team.ui.synchronize.viewers.SynchronizeDialog; import org.eclipse.ui.*; public class MergeWizard extends Wizard { @@ -68,36 +62,9 @@ public class MergeWizard extends Wizard { MergeSynchronizeParticipant participant = (MergeSynchronizeParticipant)SubscriberParticipant.find(s); if(participant == null) { participant = new MergeSynchronizeParticipant(s); - } - - SubscriberParticipantDialog compareAction = new SubscriberParticipantDialog(activePage.getWorkbenchWindow().getShell(), CVSMergeSubscriber.ID_MODAL, participant, s.roots()) { - protected SynchronizeDialog createCompareDialog(Shell shell, String title, CompareEditorInput input) { - return new SynchronizeDialog(shell, title, input) { - public boolean close() { - final IPreferenceStore store = CVSUIPlugin.getPlugin().getPreferenceStore(); - if(! isRememberParticipant() && store.getBoolean(ICVSUIConstants.PREF_PROMPT_ON_MIXED_TAGS)) { - AvoidableMessageDialog dialog = new AvoidableMessageDialog( - getShell(), - "Remember the Merge", //$NON-NLS-1$ - null, // accept the default window icon - "Do you want to remember this merge session for later? If you plan on merging changes into your workspace from this merge configuration later on you should save this session. This will make it easier to incrementally merge changes.", //$NON-NLS-1$ - MessageDialog.WARNING, - new String[] {IDialogConstants.OK_LABEL, IDialogConstants.NO_LABEL}, - 0); - - if(dialog.open() == IDialogConstants.OK_ID) { - rememberParticipant(); - } - if(dialog.isDontShowAgain()) { - store.setValue(ICVSUIConstants.PREF_WARN_REMEMBERING_MERGES, false); - } - } - return super.close(); - } - }; - } - }; - compareAction.run(); + } + IRefreshSubscriberListener listener = participant.getRefreshListeners().createModalDialogListener(CVSMergeSubscriber.ID_MODAL, participant, participant.getSubscriberSyncInfoCollector().getSyncInfoTree()); + participant.refresh(s.roots(), listener, Policy.bind("Participant.merging"), null); //$NON-NLS-1$ return true; } diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties index 660e25e87..0f5612bf7 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties @@ -1071,3 +1071,6 @@ CompareRevertAction.0=Reverting {0} resources FileModificationValidator.3=Perform Edit? FileModificationValidator.4=A CVS edit notification is required to be sent to the server in order to allow editing of one or more selected files. Continue? CVSSynchronizeViewPage.0=Show incoming grouped by comment +Participant.comparing=Comparing +Participant.merging=Merging +Participant.synchronizing=Synchronizing diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CVSOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CVSOperation.java index 3e0f522cd..748c06c7e 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CVSOperation.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CVSOperation.java @@ -22,7 +22,7 @@ import org.eclipse.team.internal.ccvs.core.CVSStatus; import org.eclipse.team.internal.ccvs.core.util.Assert; import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin; import org.eclipse.team.internal.ccvs.ui.Policy; -import org.eclipse.team.ui.synchronize.subscriber.TeamOperation; +import org.eclipse.team.ui.TeamOperation; import org.eclipse.ui.IWorkbenchPart; diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/ReconcileProjectOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/ReconcileProjectOperation.java index c7f8f7e29..b1c03eb99 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/ReconcileProjectOperation.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/ReconcileProjectOperation.java @@ -54,7 +54,7 @@ public class ReconcileProjectOperation extends CVSOperation { public void run() { WorkspaceSynchronizeParticipant participant = CVSUIPlugin.getPlugin().getCvsWorkspaceSynchronizeParticipant(); if(participant != null) { - participant.refresh(new IResource[] {project}); + participant.refresh(new IResource[] {project}, participant.getRefreshListeners().createSynchronizeViewListener(participant), Policy.bind("Participant.synchronizing"), null); //$NON-NLS-1$ } } }); diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSLocalCompareConfiguration.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSLocalCompareConfiguration.java deleted file mode 100644 index 70304c78a..000000000 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSLocalCompareConfiguration.java +++ /dev/null @@ -1,108 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2003 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.team.internal.ccvs.ui.subscriber; - -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jface.action.*; -import org.eclipse.jface.viewers.StructuredViewer; -import org.eclipse.team.core.TeamException; -import org.eclipse.team.core.subscribers.SubscriberSyncInfoCollector; -import org.eclipse.team.core.synchronize.*; -import org.eclipse.team.internal.ccvs.core.*; -import org.eclipse.team.ui.synchronize.subscriber.RefreshAction; -import org.eclipse.team.ui.synchronize.viewers.TreeViewerAdvisor; - -/** - * Provides compare specific support - */ -public class CVSLocalCompareConfiguration extends TreeViewerAdvisor { - - private CVSCompareSubscriber subscriber; - private SubscriberSyncInfoCollector collector; - private RefreshAction refreshAction; - private RefreshAction refreshAllAction; - - /** - * Return a <code>SyncInfoSetCompareConfiguration</code> that can be used in a - * <code>SynchronizeCompareInput</code> to show the comparsion between the local - * workspace resources and their tagged counterparts on the server. - * @param resources the resources to be compared - * @param tag the tag to be compared with - * @return a configuration for a <code>SynchronizeCompareInput</code> - */ - public static CVSLocalCompareConfiguration create(IResource[] resources, CVSTag tag) { - CVSCompareSubscriber subscriber = new CVSCompareSubscriber(resources, tag); - SubscriberSyncInfoCollector collector = new SubscriberSyncInfoCollector(subscriber); - collector.setFilter(new SyncInfoFilter() { - private SyncInfoFilter contentCompare = new SyncInfoFilter.ContentComparisonSyncInfoFilter(); - public boolean select(SyncInfo info, IProgressMonitor monitor) { - if (info.getLocal().getType() == IResource.FILE) { - // Want to select infos whose contents do not match - return !contentCompare.select(info, monitor); - } else { - return true; - } - } - }); - collector.start(); - return new CVSLocalCompareConfiguration(subscriber, collector); - } - - private CVSLocalCompareConfiguration(CVSCompareSubscriber subscriber, SubscriberSyncInfoCollector collector) { - super("org.eclipse.team.cvs.ui.compare-participant", null, collector.getSyncInfoTree()); //$NON-NLS-1$ - this.subscriber = subscriber; - this.collector = collector; - } - - /* (non-Javadoc) - * @see org.eclipse.team.ui.synchronize.SyncInfoSetCompareConfiguration#dispose() - */ - public void dispose() { - collector.dispose(); - subscriber.dispose(); - super.dispose(); - } - - public Object prepareInput(IProgressMonitor monitor) throws TeamException { - subscriber.refresh(subscriber.roots(), IResource.DEPTH_INFINITE, monitor); - collector.waitForCollector(monitor); - return super.prepareInput(monitor); - } - - /* (non-Javadoc) - * @see org.eclipse.team.ui.synchronize.SyncInfoSetCompareConfiguration#fillContextMenu(org.eclipse.jface.viewers.StructuredViewer, org.eclipse.jface.action.IMenuManager) - */ - protected void fillContextMenu(StructuredViewer viewer, IMenuManager manager) { - manager.add(refreshAction); - manager.add(new Separator()); - super.fillContextMenu(viewer, manager); - } - - /* (non-Javadoc) - * @see org.eclipse.team.ui.synchronize.TreeViewerAdvisor#contributeToToolBar(org.eclipse.jface.action.IToolBarManager) - */ - public void contributeToToolBar(IToolBarManager tbm) { - tbm.add(refreshAllAction); - } - - protected void initializeActions(StructuredViewer viewer) { - super.initializeActions(viewer); - refreshAction = new RefreshAction(viewer, ((CVSSyncTreeSubscriber)collector.getSubscriber()).getName(), collector, null /* no listener */, false); - refreshAllAction = new RefreshAction(viewer, ((CVSSyncTreeSubscriber)collector.getSubscriber()).getName(), collector, null /* no listener */, true); - } - /* (non-Javadoc) - * @see org.eclipse.team.ui.synchronize.SyncInfoSetCompareConfiguration#getSyncSet() - */ - public SyncInfoTree getSyncInfoTree() { - return collector.getSyncInfoTree(); - } -} diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizard.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizard.java index 32e0a0688..5d60cd05d 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizard.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizard.java @@ -289,7 +289,7 @@ public class SharingWizard extends Wizard implements IConfigurationWizard { } WorkspaceSynchronizeParticipant participant = CVSUIPlugin.getPlugin().getCvsWorkspaceSynchronizeParticipant(); if(participant != null) { - participant.refresh(new IResource[] {project}); + participant.refresh(new IResource[] {project}, participant.getRefreshListeners().createSynchronizeViewListener(participant), Policy.bind("Participant.synchronizing"), null); } } } catch (InterruptedException e) { |