Bug 48827 Progress going on even when Synch view is closed
diff --git a/bundles/org.eclipse.team.cvs.ui/plugin.xml b/bundles/org.eclipse.team.cvs.ui/plugin.xml
index 597175a..c19018f 100644
--- a/bundles/org.eclipse.team.cvs.ui/plugin.xml
+++ b/bundles/org.eclipse.team.cvs.ui/plugin.xml
@@ -37,6 +37,7 @@
<participant
name="%CVSWorkspaceParticipant"
type="static"
+ multipleInstances="false"
icon="icons/full/cview16/cvs_persp.gif"
class="org.eclipse.team.internal.ccvs.ui.subscriber.WorkspaceSynchronizeParticipant"
id="org.eclipse.team.cvs.ui.cvsworkspace-participant">
@@ -44,6 +45,7 @@
<participant
name="%CVSMergeParticipant"
type="dynamic"
+ multipleInstances="true"
icon="icons/full/clcl16/newstream_wiz.gif"
class="org.eclipse.team.internal.ccvs.ui.subscriber.MergeSynchronizeParticipant"
id="org.eclipse.team.cvs.ui.cvsmerge-participant">
@@ -51,6 +53,8 @@
<participant
name="%CVSCompareParticipant"
type="dynamic"
+ multipleInstances="true"
+ persistent="false"
icon="icons/full/cview16/compare_view.gif"
class="org.eclipse.team.internal.ccvs.ui.subscriber.CompareParticipant"
id="org.eclipse.team.cvs.ui.compare-participant">
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSUIPlugin.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSUIPlugin.java
index 7e75845..4c1c3b2 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSUIPlugin.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSUIPlugin.java
@@ -41,7 +41,7 @@
import org.eclipse.team.internal.ui.TeamUIPlugin;
import org.eclipse.team.internal.ui.Utils;
import org.eclipse.team.ui.TeamUI;
-import org.eclipse.team.ui.synchronize.ISynchronizeParticipant;
+import org.eclipse.team.ui.synchronize.ISynchronizeParticipantReference;
import org.eclipse.ui.*;
import org.eclipse.ui.plugin.AbstractUIPlugin;
@@ -711,10 +711,14 @@
* @return Returns the cvsWorkspaceSynchronizeViewPage.
*/
public WorkspaceSynchronizeParticipant getCvsWorkspaceSynchronizeParticipant() {
- ISynchronizeParticipant[] instances = TeamUI.getSynchronizeManager().find(WorkspaceSynchronizeParticipant.ID);
- if(instances.length == 1) {
- return (WorkspaceSynchronizeParticipant)instances[0];
- } else {
+ ISynchronizeParticipantReference reference = TeamUI.getSynchronizeManager().get(WorkspaceSynchronizeParticipant.ID, null);
+ try {
+ if(reference != null) {
+ return (WorkspaceSynchronizeParticipant)reference.getParticipant();
+ } else {
+ return null;
+ }
+ } catch (TeamException e) {
return null;
}
}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ReleaseCommentDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ReleaseCommentDialog.java
index 84b4e8e..4f20da1 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ReleaseCommentDialog.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ReleaseCommentDialog.java
@@ -10,35 +10,22 @@
*******************************************************************************/
package org.eclipse.team.internal.ccvs.ui;
-import java.lang.reflect.InvocationTargetException;
-
-import org.eclipse.compare.CompareConfiguration;
import org.eclipse.compare.CompareEditorInput;
import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.synchronize.SyncInfo;
import org.eclipse.team.core.synchronize.SyncInfoTree;
-import org.eclipse.team.internal.ui.Utils;
import org.eclipse.team.internal.ui.dialogs.DetailsDialog;
-import org.eclipse.team.ui.synchronize.SynchronizeCompareInput;
-import org.eclipse.team.ui.synchronize.TreeViewerAdvisor;
-import org.eclipse.team.ui.synchronize.subscribers.SubscriberParticipant;
import org.eclipse.ui.help.WorkbenchHelp;
-import org.eclipse.ui.internal.dialogs.ContainerCheckedTreeViewer;
/**
* Prompts the user for a multi-line comment for releasing to CVS.
@@ -107,21 +94,6 @@
Dialog.applyDialogFont(parent);
}
- private SyncInfoTree createResourcesToCommitSyncInfoSet(IResource[] resourcesToCommit) {
- // Create a sync set containing only the resources that will be committed.
- SubscriberParticipant participant = CVSUIPlugin.getPlugin().getCvsWorkspaceSynchronizeParticipant();
- SyncInfoTree currentSet = participant.getSubscriberSyncInfoCollector().getSyncInfoTree();
- SyncInfoTree set = new SyncInfoTree();
- for (int i = 0; i < resourcesToCommit.length; i++) {
- IResource resource = resourcesToCommit[i];
- SyncInfo info = currentSet.getSyncInfo(resource);
- if(info != null) {
- set.add(info);
- }
- }
- return set;
- }
-
/* (non-Javadoc)
* @see org.eclipse.jface.window.Window#getInitialSize()
*/
@@ -149,43 +121,7 @@
* @see org.eclipse.team.internal.ui.dialogs.DetailsDialog#createDropDownDialogArea(org.eclipse.swt.widgets.Composite)
*/
protected Composite createDropDownDialogArea(Composite parent) {
- try {
- CompareConfiguration compareConfig = new CompareConfiguration();
- compareConfig.setLeftEditable(false);
- TreeViewerAdvisor viewerAdvisor = new TreeViewerAdvisor(set);
- compareEditorInput = new SynchronizeCompareInput(compareConfig, viewerAdvisor) {
- protected StructuredViewer internalCreateDiffViewer(Composite parent, TreeViewerAdvisor diffViewerConfiguration) {
- ContainerCheckedTreeViewer viewer = new TreeViewerAdvisor.NavigableCheckboxTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
- viewer.setCheckedElements(set.getResources());
- GridData data = new GridData(GridData.FILL_BOTH);
- viewer.getControl().setLayoutData(data);
- diffViewerConfiguration.initializeViewer(viewer);
- return viewer;
- }
- };
- // We don't need a progress monitor because the actualy model will be built
- // by the event processing thread.
- compareEditorInput.run(new NullProgressMonitor());
- } catch (InterruptedException e) {
- Utils.handle(e);
- } catch (InvocationTargetException e) {
- Utils.handle(e);
- }
-
- Composite result= new Composite(parent, SWT.NONE);
- GridLayout layout= new GridLayout();
- result.setLayout(layout);
- GridData data = new GridData(GridData.FILL_BOTH);
- data.grabExcessHorizontalSpace = true;
- data.grabExcessVerticalSpace = true;
- data.heightHint = 350;
- result.setLayoutData(data);
- Label l = new Label(result, SWT.WRAP);
- l.setText(Policy.bind("ReleaseCommentDialog.6")); //$NON-NLS-1$
- Control c = compareEditorInput.createContents(result);
- data = new GridData(GridData.FILL_BOTH);
- c.setLayoutData(data);
- return result;
+ return null;
}
/* (non-Javadoc)
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 cc6f9ef..9f7cd0a 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
@@ -33,7 +33,10 @@
CVSCompareSubscriber s = new CVSCompareSubscriber(resources, tag);
CompareParticipant participant = new CompareParticipant(s);
participant.refresh(resources,
- participant.getRefreshListeners().createModalDialogListener(CVSCompareSubscriber.ID_MODAL, participant, participant.getSubscriberSyncInfoCollector().getSyncInfoTree()),
+ participant.getRefreshListeners().createModalDialogListener(
+ CVSCompareSubscriber.ID_MODAL,
+ participant,
+ participant.getSubscriberSyncInfoCollector().getSyncInfoTree()),
Policy.bind("Participant.comparing"), //$NON-NLS-1$
null);
}
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 e5ebb1d..7f154d4 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
@@ -20,7 +20,6 @@
import org.eclipse.team.internal.ccvs.ui.*;
import org.eclipse.team.internal.ccvs.ui.subscriber.MergeSynchronizeParticipant;
import org.eclipse.team.ui.synchronize.subscribers.IRefreshSubscriberListener;
-import org.eclipse.team.ui.synchronize.subscribers.SubscriberParticipant;
import org.eclipse.ui.*;
public class MergeWizard extends Wizard {
@@ -59,10 +58,7 @@
CVSTag endTag = endPage.getTag();
CVSMergeSubscriber s = new CVSMergeSubscriber(resources, startTag, endTag);
- MergeSynchronizeParticipant participant = (MergeSynchronizeParticipant)SubscriberParticipant.find(s);
- if(participant == null) {
- participant = new MergeSynchronizeParticipant(s);
- }
+ MergeSynchronizeParticipant participant = new MergeSynchronizeParticipant(s);
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/subscriber/CompareParticipant.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CompareParticipant.java
index 747d40f..0b9d229 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CompareParticipant.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CompareParticipant.java
@@ -75,6 +75,8 @@
try {
ISynchronizeParticipantDescriptor descriptor = TeamUI.getSynchronizeManager().getParticipantDescriptor(CVSCompareSubscriber.ID);
setInitializationData(descriptor);
+ CVSCompareSubscriber s = (CVSCompareSubscriber)getSubscriber();
+ setSecondaryId(s.getId().getLocalName());
} catch (CoreException e) {
CVSUIPlugin.log(e);
}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeSynchronizeAdvisor.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeSynchronizeAdvisor.java
index 9eee0bf..9bbf05f 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeSynchronizeAdvisor.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeSynchronizeAdvisor.java
@@ -39,7 +39,8 @@
protected void initializeActions(StructuredViewer treeViewer) {
super.initializeActions(treeViewer);
- removeAction = new RemoveSynchronizeParticipantAction(getParticipant());
+ SubscriberParticipant p = getParticipant();
+ removeAction = new RemoveSynchronizeParticipantAction(p);
modes = new DirectionFilterActionGroup(getParticipant(), SubscriberParticipant.INCOMING_MODE | SubscriberParticipant.CONFLICTING_MODE);
MergeUpdateAction action = new MergeUpdateAction();
action.setPromptBeforeUpdate(true);
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeSynchronizeParticipant.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeSynchronizeParticipant.java
index 4436e25..e1e8d53 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeSynchronizeParticipant.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeSynchronizeParticipant.java
@@ -22,16 +22,12 @@
import org.eclipse.team.internal.ccvs.ui.Policy;
import org.eclipse.team.ui.TeamUI;
import org.eclipse.team.ui.synchronize.*;
-import org.eclipse.team.ui.synchronize.ISynchronizeParticipantDescriptor;
-import org.eclipse.team.ui.synchronize.ISynchronizeView;
import org.eclipse.team.ui.synchronize.subscribers.SubscriberParticipant;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.PartInitException;
public class MergeSynchronizeParticipant extends SubscriberParticipant {
- private final static String CTX_QUALIFIER = "qualifier"; //$NON-NLS-1$
- private final static String CTX_LOCALNAME = "localname"; //$NON-NLS-1$
private final static String CTX_ROOT = "root"; //$NON-NLS-1$
private final static String CTX_ROOT_PATH = "root_resource"; //$NON-NLS-1$
private final static String CTX_START_TAG = "start_tag"; //$NON-NLS-1$
@@ -48,7 +44,6 @@
setSubscriber(subscriber);
}
-
/* (non-Javadoc)
* @see org.eclipse.team.ui.synchronize.subscriber.SubscriberParticipant#createSynchronizeViewerAdvisor(org.eclipse.team.ui.synchronize.ISynchronizeView)
*/
@@ -59,25 +54,27 @@
/* (non-Javadoc)
* @see org.eclipse.team.ui.sync.SubscriberParticipant#setSubscriber(org.eclipse.team.core.subscribers.TeamSubscriber)
*/
- protected void setSubscriber(Subscriber subscriber) {
+ public void setSubscriber(Subscriber subscriber) {
super.setSubscriber(subscriber);
- String id = CVSMergeSubscriber.ID;
try {
- ISynchronizeParticipantDescriptor descriptor = TeamUI.getSynchronizeManager().getParticipantDescriptor(id);
+ ISynchronizeParticipantDescriptor descriptor = TeamUI.getSynchronizeManager().getParticipantDescriptor(CVSMergeSubscriber.ID);
setInitializationData(descriptor);
+ CVSMergeSubscriber s = (CVSMergeSubscriber)getSubscriber();
+ setSecondaryId(s.getId().getLocalName());
} catch (CoreException e) {
CVSUIPlugin.log(e);
}
}
-
+
/* (non-Javadoc)
* @see org.eclipse.team.ui.synchronize.ISynchronizeParticipant#init(org.eclipse.ui.IMemento)
*/
- public void init(IMemento memento) throws PartInitException {
- super.init(memento);
+ public void init(String secondayId, IMemento memento) throws PartInitException {
+ super.init(secondayId, memento);
if(memento != null) {
- String qualifier = memento.getString(CTX_QUALIFIER);
- String localname = memento.getString(CTX_LOCALNAME);
+ ISynchronizeParticipantDescriptor descriptor = TeamUI.getSynchronizeManager().getParticipantDescriptor(CVSMergeSubscriber.ID);
+ String qualifier = descriptor.getId();
+ String localname = secondayId;
if(qualifier == null || localname == null) {
throw new PartInitException(Policy.bind("MergeSynchronizeParticipant.8")); //$NON-NLS-1$
}
@@ -95,9 +92,6 @@
public void saveState(IMemento memento) {
super.saveState(memento);
CVSMergeSubscriber s = (CVSMergeSubscriber)getSubscriber();
- QualifiedName sId = s.getId();
- memento.putString(CTX_QUALIFIER, sId.getQualifier());
- memento.putString(CTX_LOCALNAME, sId.getLocalName());
write(s, memento);
}
@@ -106,7 +100,11 @@
*/
public void dispose() {
super.dispose();
- ((CVSMergeSubscriber)getSubscriber()).cancel();
+ if(TeamUI.getSynchronizeManager().get(getId(), getSecondaryId()) == null) {
+ // If the participant isn't managed by the synchronize manager then we
+ // must ensure that the state cached in the synchronizer is flushed.
+ flushStateCache();
+ }
}
/* (non-Javadoc)
@@ -116,9 +114,6 @@
return ((CVSMergeSubscriber)getSubscriber()).getName();
}
- /* (non-Javadoc)
- * @see org.eclipse.team.core.subscribers.TeamSubscriber#saveState(org.eclipse.team.internal.core.SaveContext)
- */
private void write(CVSMergeSubscriber s, IMemento memento) {
// start and end tags
CVSTag start = s.getStartTag();
@@ -164,4 +159,8 @@
IResource[] roots = (IResource[]) resources.toArray(new IResource[resources.size()]);
return new CVSMergeSubscriber(id, roots, start, end);
}
+
+ private void flushStateCache() {
+ ((CVSMergeSubscriber)getSubscriber()).cancel();
+ }
}
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceSynchronizeParticipant.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceSynchronizeParticipant.java
index bd0b4e8..e5babec 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceSynchronizeParticipant.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceSynchronizeParticipant.java
@@ -25,8 +25,8 @@
/* (non-Javadoc)
* @see org.eclipse.team.ui.synchronize.ISynchronizeParticipant#init(org.eclipse.ui.IMemento)
*/
- public void init(IMemento memento) throws PartInitException {
- super.init(memento);
+ public void init(String secondaryId, IMemento memento) throws PartInitException {
+ super.init(secondaryId, memento);
Subscriber subscriber = CVSProviderPlugin.getPlugin().getCVSWorkspaceSubscriber();
setSubscriber(subscriber);
}
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 52b1f62..69f96ee 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
@@ -12,6 +12,7 @@
import java.lang.reflect.InvocationTargetException;
+
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IProgressMonitor;