diff options
author | Michael Valenta | 2004-04-14 02:00:43 +0000 |
---|---|---|
committer | Michael Valenta | 2004-04-14 02:00:43 +0000 |
commit | 126b745d38aa097658d3d1c01bc35ceecb00ab21 (patch) | |
tree | 9da0928048d9959264851813d00a0fe51a19c4b3 | |
parent | 0de7760278c6b019da05a2490b6c12005f082790 (diff) | |
download | eclipse.platform.team-126b745d38aa097658d3d1c01bc35ceecb00ab21.tar.gz eclipse.platform.team-126b745d38aa097658d3d1c01bc35ceecb00ab21.tar.xz eclipse.platform.team-126b745d38aa097658d3d1c01bc35ceecb00ab21.zip |
*** empty log message ***
13 files changed, 308 insertions, 395 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSParticipantActionContribution.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSParticipantActionContribution.java new file mode 100644 index 000000000..b3a4781c1 --- /dev/null +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSParticipantActionContribution.java @@ -0,0 +1,150 @@ +/******************************************************************************* + * Copyright (c) 2000, 2004 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.compare.structuremergeviewer.ICompareInput; +import org.eclipse.compare.structuremergeviewer.ICompareInputChangeListener; +import org.eclipse.core.resources.IResource; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.util.IPropertyChangeListener; +import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.jface.viewers.*; +import org.eclipse.swt.graphics.Image; +import org.eclipse.team.internal.ccvs.ui.CVSLightweightDecorator; +import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin; +import org.eclipse.team.internal.ui.synchronize.actions.RemoveSynchronizeParticipantAction; +import org.eclipse.team.ui.synchronize.*; +import org.eclipse.team.ui.synchronize.subscribers.SubscriberParticipant; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IViewPart; + +/** + * Actions common to all CVS particpants + */ +public abstract class CVSParticipantActionContribution implements IActionContribution, IPropertyChangeListener { + + private ISynchronizePageConfiguration configuration; + private RemoveSynchronizeParticipantAction removeAction; + + private static class CVSLabelDecorator extends LabelProvider implements ILabelDecorator { + public String decorateText(String input, Object element) { + String text = input; + if (element instanceof ISynchronizeModelElement) { + IResource resource = ((ISynchronizeModelElement)element).getResource(); + if(resource != null && resource.getType() != IResource.ROOT) { + CVSLightweightDecorator.Decoration decoration = new CVSLightweightDecorator.Decoration(); + CVSLightweightDecorator.decorateTextLabel(resource, decoration, false, true); + StringBuffer output = new StringBuffer(25); + if(decoration.prefix != null) { + output.append(decoration.prefix); + } + output.append(text); + if(decoration.suffix != null) { + output.append(decoration.suffix); + } + return output.toString(); + } + } + return text; + } + public Image decorateImage(Image base, Object element) { + return base; + } + } + + /* (non-Javadoc) + * @see org.eclipse.team.ui.synchronize.IActionContribution#initialize(org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration) + */ + public void initialize(ISynchronizePageConfiguration configuration) { + this.configuration = configuration; + // Listen for model changes + configuration.addPropertyChangeListener(this); + // Listen for decorator changed to refresh the viewer's labels. + CVSUIPlugin.addPropertyChangeListener(this); + Object o = configuration.getProperty(ISynchronizePageConfiguration.P_MODEL); + if (o != null) { + inputChanged(o); + } + ILabelProvider provider = (ILabelProvider)configuration.getProperty(ISynchronizePageConfiguration.P_LABEL_PROVIDER); + configuration.setProperty( + ISynchronizePageConfiguration.P_LABEL_PROVIDER, + new DecoratingColorLabelProvider(provider, new CVSLabelDecorator())); + } + + protected void createRemoveAction(ISynchronizePageConfiguration configuration) { + if (configuration.getSite().getPart() instanceof IViewPart) { + SubscriberParticipant p = (SubscriberParticipant)configuration.getParticipant(); + removeAction = new RemoveSynchronizeParticipantAction(p); + } + } + + /* (non-Javadoc) + * @see org.eclipse.team.ui.synchronize.IActionContribution#dispose() + */ + public void dispose() { + configuration.removePropertyChangeListener(this); + } + + /* (non-Javadoc) + * @see org.eclipse.team.ui.synchronize.IActionContribution#fillContextMenu(org.eclipse.jface.action.IMenuManager) + */ + public void fillContextMenu(IMenuManager manager) { + // Do nothing + } + + /* (non-Javadoc) + * @see org.eclipse.team.ui.synchronize.IActionContribution#setActionBars(org.eclipse.ui.IActionBars) + */ + public void setActionBars(IActionBars actionBars) { + if(actionBars != null) { + IToolBarManager toolbar = actionBars.getToolBarManager(); + if(toolbar != null) { + if (removeAction != null) { + // Add the remove to the end of the toolbar + toolbar.add(removeAction); + } + } + } + } + + /* (non-Javadoc) + * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) + */ + public void propertyChange(PropertyChangeEvent event) { + String property = event.getProperty(); + if (property.equals(ISynchronizePageConfiguration.P_MODEL)) { + Object o = event.getNewValue(); + inputChanged(o); + } + //TODO: +// if(property.equals(CVSUIPlugin.P_DECORATORS_CHANGED) && getViewer() != null && getSyncInfoSet() != null) { +// getViewer().refresh(true /* update labels */); +// } + } + + private void inputChanged(Object o) { + if (o instanceof ISynchronizeModelElement) { + final ISynchronizeModelElement input = (ISynchronizeModelElement)o; + input.addCompareInputChangeListener(new ICompareInputChangeListener() { + public void compareInputChanged(ICompareInput source) { + modelChanged(input); + } + }); + modelChanged(input); + } + } + + /** + * @param input + */ + protected abstract void modelChanged(ISynchronizeModelElement input); +} diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSSynchronizeViewerAdvisor.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSSynchronizeViewerAdvisor.java deleted file mode 100644 index 5b2585928..000000000 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSSynchronizeViewerAdvisor.java +++ /dev/null @@ -1,115 +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.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; -import org.eclipse.jface.viewers.*; -import org.eclipse.swt.graphics.Image; -import org.eclipse.team.core.synchronize.SyncInfoTree; -import org.eclipse.team.internal.ccvs.ui.CVSLightweightDecorator; -import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin; -import org.eclipse.team.internal.ui.synchronize.ActionDelegateWrapper; -import org.eclipse.team.ui.synchronize.*; -import org.eclipse.team.ui.synchronize.subscribers.*; -import org.eclipse.team.ui.synchronize.subscribers.SynchronizeViewerAdvisor; - -public class CVSSynchronizeViewerAdvisor extends SynchronizeViewerAdvisor implements ISynchronizeModelChangeListener, IPropertyChangeListener { - - private boolean isGroupIncomingByComment = false; - - private static class CVSLabelDecorator extends LabelProvider implements ILabelDecorator { - public String decorateText(String input, Object element) { - String text = input; - if (element instanceof ISynchronizeModelElement) { - IResource resource = ((ISynchronizeModelElement)element).getResource(); - if(resource != null && resource.getType() != IResource.ROOT) { - CVSLightweightDecorator.Decoration decoration = new CVSLightweightDecorator.Decoration(); - CVSLightweightDecorator.decorateTextLabel(resource, decoration, false, true); - StringBuffer output = new StringBuffer(25); - if(decoration.prefix != null) { - output.append(decoration.prefix); - } - output.append(text); - if(decoration.suffix != null) { - output.append(decoration.suffix); - } - return output.toString(); - } - } - return text; - } - public Image decorateImage(Image base, Object element) { - return base; - } - } - - public CVSSynchronizeViewerAdvisor(SubscriberPageConfiguration configuration, SyncInfoTree syncInfoTree) { - super(configuration, syncInfoTree); - - // Sync changes are used to update the action state for the update/commit buttons. - addInputChangedListener(this); - - // Listen for decorator changed to refresh the viewer's labels. - CVSUIPlugin.addPropertyChangeListener(this); - } - - /* (non-Javadoc) - * @see org.eclipse.team.ui.synchronize.TreeViewerAdvisor#getLabelProvider() - */ - protected ILabelProvider getLabelProvider() { - ILabelProvider oldProvider = super.getLabelProvider(); - return new DecoratingColorLabelProvider(oldProvider, new CVSLabelDecorator()); - } - - /* (non-Javadoc) - * @see org.eclipse.team.ui.synchronize.TreeViewerAdvisor#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) - */ - public void propertyChange(PropertyChangeEvent event) { - String property = event.getProperty(); - if(property.equals(CVSUIPlugin.P_DECORATORS_CHANGED) && getViewer() != null && getSyncInfoSet() != null) { - getViewer().refresh(true /* update labels */); - } - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.team.ui.sync.AbstractSynchronizeParticipant#dispose() - */ - public void dispose() { - super.dispose(); - removeInputChangedListener(this); - CVSUIPlugin.removePropertyChangeListener(this); - } - - /* (non-Javadoc) - * @see org.eclipse.team.ui.synchronize.ISynchronizeModelChangeListener#modelChanged(org.eclipse.team.ui.synchronize.ISynchronizeModelElement) - */ - public void modelChanged(ISynchronizeModelElement root) { - ActionDelegateWrapper[] actions = getActionDelegates(); - for (int i = 0; i < actions.length; i++) { - ActionDelegateWrapper wrapper = actions[i]; - wrapper.setSelection(root); - } - } - - /** - * Return the non-null list of action delegates whose selection must - * be updated when the model changes. - * By default, an empty list is returned. - * @return the array of action delegates - */ - protected ActionDelegateWrapper[] getActionDelegates() { - return new ActionDelegateWrapper[0]; - } -} 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 6736ebb73..7f588d6d3 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 @@ -10,22 +10,17 @@ *******************************************************************************/ package org.eclipse.team.internal.ccvs.ui.subscriber; -import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jface.action.IToolBarManager; -import org.eclipse.jface.action.Separator; -import org.eclipse.jface.viewers.StructuredViewer; -import org.eclipse.swt.widgets.Shell; import org.eclipse.team.core.subscribers.Subscriber; -import org.eclipse.team.core.synchronize.*; +import org.eclipse.team.core.synchronize.SyncInfo; +import org.eclipse.team.core.synchronize.SyncInfoFilter; import org.eclipse.team.internal.ccvs.core.CVSCompareSubscriber; import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin; -import org.eclipse.team.internal.ui.synchronize.actions.RemoveSynchronizeParticipantAction; import org.eclipse.team.ui.TeamUI; -import org.eclipse.team.ui.synchronize.*; -import org.eclipse.team.ui.synchronize.subscribers.*; -import org.eclipse.ui.IActionBars; +import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration; +import org.eclipse.team.ui.synchronize.ISynchronizeParticipantDescriptor; +import org.eclipse.team.ui.synchronize.subscribers.SubscriberParticipant; public class CompareParticipant extends SubscriberParticipant { @@ -37,32 +32,7 @@ public class CompareParticipant extends SubscriberParticipant { } }; - private class CompareParticipantAdvisor extends CVSSynchronizeViewerAdvisor { - private RemoveSynchronizeParticipantAction removeAction; - - public CompareParticipantAdvisor(SubscriberPageConfiguration configuration, SyncInfoTree syncInfoTree) { - super(configuration, syncInfoTree); - } - - protected void initializeActions(StructuredViewer treeViewer) { - super.initializeActions(treeViewer); - removeAction = new RemoveSynchronizeParticipantAction(getParticipant()); - } - - public void setActionBars(IActionBars actionBars) { - super.setActionBars(actionBars); - if(actionBars != null) { - IToolBarManager toolbar = actionBars.getToolBarManager(); - if(toolbar != null) { - toolbar.add(new Separator()); - toolbar.add(removeAction); - } - } - } - } - public CompareParticipant(CVSCompareSubscriber subscriber) { - super(); setSubscriber(subscriber); } @@ -89,13 +59,6 @@ public class CompareParticipant extends SubscriberParticipant { } /* (non-Javadoc) - * @see org.eclipse.team.ui.synchronize.subscriber.SubscriberParticipant#updateMode(int) - */ - protected void updateMode(int mode) { - // Don't allow modes to be used with this participant - } - - /* (non-Javadoc) * @see org.eclipse.team.ui.synchronize.subscriber.SubscriberParticipant#preCollectingChanges() */ protected void preCollectingChanges() { @@ -110,11 +73,11 @@ public class CompareParticipant extends SubscriberParticipant { public boolean isPersistent() { return false; } - + /* (non-Javadoc) - * @see org.eclipse.team.ui.synchronize.subscriber.SubscriberParticipant#createSynchronizeViewerAdvisor(org.eclipse.team.ui.synchronize.ISynchronizeView) + * @see org.eclipse.team.ui.synchronize.subscribers.SubscriberParticipant#initializeConfiguration(org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration) */ - protected StructuredViewerAdvisor createSynchronizeViewerAdvisor(SubscriberPageConfiguration configuration, SyncInfoTree syncInfoTree) { - return new CompareParticipantAdvisor(configuration, syncInfoTree); + protected void initializeConfiguration(ISynchronizePageConfiguration configuration) { + configuration.addActionContribution(new CompareParticipantActionContribution()); } } diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CompareParticipantActionContribution.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CompareParticipantActionContribution.java new file mode 100644 index 000000000..aabd12cc6 --- /dev/null +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CompareParticipantActionContribution.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2000, 2004 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.team.ui.synchronize.ISynchronizeModelElement; +import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration; + +/** + * Toolbar actions for compare participants + */ +public class CompareParticipantActionContribution extends CVSParticipantActionContribution { + + /* (non-Javadoc) + * @see org.eclipse.team.internal.ccvs.ui.subscriber.CVSParticipantActionContribution#initialize(org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration) + */ + public void initialize(ISynchronizePageConfiguration configuration) { + createRemoveAction(configuration); + super.initialize(configuration); + } + + /* (non-Javadoc) + * @see org.eclipse.team.internal.ccvs.ui.subscriber.CVSParticipantActionContribution#modelChanged(org.eclipse.team.ui.synchronize.ISynchronizeModelElement) + */ + protected void modelChanged(ISynchronizeModelElement input) { + // Nothing to do + } +} diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeParticipantActionContribution.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeParticipantActionContribution.java new file mode 100644 index 000000000..6aae65def --- /dev/null +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeParticipantActionContribution.java @@ -0,0 +1,64 @@ +/******************************************************************************* + * Copyright (c) 2000, 2004 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.jface.action.IToolBarManager; +import org.eclipse.team.internal.ccvs.ui.Policy; +import org.eclipse.team.internal.ui.Utils; +import org.eclipse.team.internal.ui.synchronize.ActionDelegateWrapper; +import org.eclipse.team.ui.synchronize.ISynchronizeModelElement; +import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration; +import org.eclipse.team.ui.synchronize.subscribers.ISubscriberPageConfiguration; +import org.eclipse.ui.IActionBars; + +/** + * Actions for the merge particpant's toolbar + */ +public class MergeParticipantActionContribution extends CVSParticipantActionContribution { + + private ActionDelegateWrapper updateAdapter; + + /* (non-Javadoc) + * @see org.eclipse.team.internal.ccvs.ui.subscriber.CVSParticipantActionContribution#initialize(org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration) + */ + public void initialize(ISynchronizePageConfiguration configuration) { + createRemoveAction(configuration); + ((ISubscriberPageConfiguration)configuration).setSupportedModes(ISubscriberPageConfiguration.INCOMING_MODE | ISubscriberPageConfiguration.CONFLICTING_MODE); + MergeUpdateAction action = new MergeUpdateAction(); + action.setPromptBeforeUpdate(true); + updateAdapter = new ActionDelegateWrapper(action, configuration.getSite().getPart()); + Utils.initAction(updateAdapter, "action.SynchronizeViewUpdate.", Policy.getBundle()); //$NON-NLS-1$ + ((ISubscriberPageConfiguration)configuration).setMode(ISubscriberPageConfiguration.INCOMING_MODE); + super.initialize(configuration); + } + + /* (non-Javadoc) + * @see org.eclipse.team.internal.ccvs.ui.subscriber.CVSParticipantActionContribution#modelChanged(org.eclipse.team.ui.synchronize.ISynchronizeModelElement) + */ + protected void modelChanged(ISynchronizeModelElement input) { + updateAdapter.setSelection(input); + } + + /* (non-Javadoc) + * @see org.eclipse.team.ui.synchronize.IActionContribution#setActionBars(org.eclipse.ui.IActionBars) + */ + public void setActionBars(IActionBars actionBars) { + if(actionBars != null) { + IToolBarManager toolbar = actionBars.getToolBarManager(); + if(toolbar != null) { + if(toolbar.find(MergeSynchronizeParticipant.ACTION_GROUP) != null) { + toolbar.appendToGroup(MergeSynchronizeParticipant.ACTION_GROUP, updateAdapter); + } + } + } + super.setActionBars(actionBars); + } +} 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 deleted file mode 100644 index 54f5312c2..000000000 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/MergeSynchronizeAdvisor.java +++ /dev/null @@ -1,79 +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.jface.action.IToolBarManager; -import org.eclipse.jface.action.Separator; -import org.eclipse.jface.viewers.StructuredViewer; -import org.eclipse.team.core.synchronize.SyncInfoTree; -import org.eclipse.team.internal.ccvs.ui.Policy; -import org.eclipse.team.internal.ui.Utils; -import org.eclipse.team.internal.ui.synchronize.ActionDelegateWrapper; -import org.eclipse.team.internal.ui.synchronize.actions.RemoveSynchronizeParticipantAction; -import org.eclipse.team.ui.synchronize.*; -import org.eclipse.team.ui.synchronize.subscribers.*; -import org.eclipse.team.ui.synchronize.subscribers.DirectionFilterActionGroup; -import org.eclipse.ui.IActionBars; - - -public class MergeSynchronizeAdvisor extends CVSSynchronizeViewerAdvisor { - - private RemoveSynchronizeParticipantAction removeAction; - private DirectionFilterActionGroup modes; - private ActionDelegateWrapper updateAdapter; - - public MergeSynchronizeAdvisor(SubscriberPageConfiguration configuration, SyncInfoTree syncInfoTree) { - super(configuration, syncInfoTree); - } - - /* (non-Javadoc) - * @see org.eclipse.team.ui.synchronize.subscriber.SynchronizeViewerAdvisor#initializeActions(org.eclipse.jface.viewers.StructuredViewer) - */ - protected void initializeActions(StructuredViewer treeViewer) { - super.initializeActions(treeViewer); - - SubscriberParticipant p = getParticipant(); - removeAction = new RemoveSynchronizeParticipantAction(p); - SubscriberPageConfiguration configuration = getConfiguration(); - configuration.setSupportedModes(SubscriberPageConfiguration.INCOMING_MODE | SubscriberPageConfiguration.CONFLICTING_MODE); - modes = new DirectionFilterActionGroup(configuration); - MergeUpdateAction action = new MergeUpdateAction(); - action.setPromptBeforeUpdate(true); - updateAdapter = new ActionDelegateWrapper(action, getSynchronizeView()); - Utils.initAction(updateAdapter, "action.SynchronizeViewUpdate.", Policy.getBundle()); //$NON-NLS-1$ - configuration.setMode(SubscriberPageConfiguration.INCOMING_MODE); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.part.IPage#setActionBars(org.eclipse.ui.IActionBars) - */ - public void setActionBars(IActionBars actionBars) { - super.setActionBars(actionBars); - if(actionBars != null) { - IToolBarManager toolbar = actionBars.getToolBarManager(); - if(toolbar != null) { - toolbar.add(new Separator()); - modes.fillToolBar(toolbar); - toolbar.add(new Separator()); - toolbar.add(updateAdapter); - toolbar.add(removeAction); - } - } - } - - /* (non-Javadoc) - * @see org.eclipse.team.internal.ccvs.ui.subscriber.CVSSynchronizeViewerAdvisor#getActionDelegates() - */ - protected ActionDelegateWrapper[] getActionDelegates() { - // Returned so that the superclass will forward model changes - return new ActionDelegateWrapper[] { updateAdapter }; - } -}
\ No newline at end of file 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 482698f47..36ad31d40 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 @@ -16,18 +16,25 @@ import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.*; import org.eclipse.team.core.subscribers.Subscriber; -import org.eclipse.team.core.synchronize.SyncInfoTree; import org.eclipse.team.internal.ccvs.core.*; import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin; 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.subscribers.*; +import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration; +import org.eclipse.team.ui.synchronize.ISynchronizeParticipantDescriptor; +import org.eclipse.team.ui.synchronize.subscribers.SubscriberParticipant; import org.eclipse.ui.IMemento; import org.eclipse.ui.PartInitException; public class MergeSynchronizeParticipant extends SubscriberParticipant { + /** + * The id of a workspace action group to which additions actions can + * be added. + */ + public static final String ACTION_GROUP = "cvs_merge_actions"; //$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$ @@ -40,18 +47,10 @@ public class MergeSynchronizeParticipant extends SubscriberParticipant { } public MergeSynchronizeParticipant(CVSMergeSubscriber subscriber) { - super(); setSubscriber(subscriber); } /* (non-Javadoc) - * @see org.eclipse.team.ui.synchronize.subscriber.SubscriberParticipant#createSynchronizeViewerAdvisor(org.eclipse.team.ui.synchronize.ISynchronizeView) - */ - protected StructuredViewerAdvisor createSynchronizeViewerAdvisor(SubscriberPageConfiguration configuration, SyncInfoTree syncInfoTree) { - return new MergeSynchronizeAdvisor(configuration, syncInfoTree); - } - - /* (non-Javadoc) * @see org.eclipse.team.ui.sync.SubscriberParticipant#setSubscriber(org.eclipse.team.core.subscribers.TeamSubscriber) */ public void setSubscriber(Subscriber subscriber) { @@ -163,4 +162,16 @@ public class MergeSynchronizeParticipant extends SubscriberParticipant { private void flushStateCache() { ((CVSMergeSubscriber)getSubscriber()).cancel(); } + + /* (non-Javadoc) + * @see org.eclipse.team.ui.synchronize.subscribers.SubscriberParticipant#initializeConfiguration(org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration) + */ + protected void initializeConfiguration(ISynchronizePageConfiguration configuration) { + configuration.setProperty(ISynchronizePageConfiguration.P_TOOLBAR_MENU, new String[] { + ISynchronizePageConfiguration.SYNCHRONIZE_GROUP, + ISynchronizePageConfiguration.NAVIGATE_GROUP, + ISynchronizePageConfiguration.MODE_GROUP, + ACTION_GROUP}); + configuration.addActionContribution(new MergeParticipantActionContribution()); + } }
\ No newline at end of file diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceParticipantActionContributions.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceParticipantActionContributions.java index 1435011e6..84cd087e9 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceParticipantActionContributions.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceParticipantActionContributions.java @@ -10,31 +10,22 @@ *******************************************************************************/ package org.eclipse.team.internal.ccvs.ui.subscriber; -import org.eclipse.compare.structuremergeviewer.*; -import org.eclipse.jface.action.*; -import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.Separator; import org.eclipse.team.internal.ccvs.ui.Policy; import org.eclipse.team.internal.ui.Utils; import org.eclipse.team.internal.ui.synchronize.ActionDelegateWrapper; -import org.eclipse.team.ui.synchronize.*; +import org.eclipse.team.ui.synchronize.ISynchronizeModelElement; +import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration; import org.eclipse.ui.IActionBars; /** * Actions for the CVS workspace participant toolbar menu */ -public class WorkspaceParticipantActionContributions implements IActionContribution { +public class WorkspaceParticipantActionContributions extends CVSParticipantActionContribution { private ActionDelegateWrapper commitToolbar; private ActionDelegateWrapper updateToolbar; - private IPropertyChangeListener listener = new IPropertyChangeListener() { - public void propertyChange(PropertyChangeEvent event) { - if (event.getProperty().equals(ISynchronizePageConfiguration.P_MODEL)) { - Object o = event.getNewValue(); - inputChanged(o); - } - } - }; /* (non-Javadoc) * @see org.eclipse.team.ui.synchronize.IContextMenuContribution#initialize(org.eclipse.jface.viewers.StructuredViewer) @@ -48,55 +39,22 @@ public class WorkspaceParticipantActionContributions implements IActionContribut Utils.initAction(commitToolbar, "action.SynchronizeViewCommit.", Policy.getBundle()); //$NON-NLS-1$ Utils.initAction(updateToolbar, "action.SynchronizeViewUpdate.", Policy.getBundle()); //$NON-NLS-1$ - configuration.addPropertyChangeListener(listener); - Object o = configuration.getProperty(ISynchronizePageConfiguration.P_MODEL); - if (o != null) { - inputChanged(o); - } - } - - /* (non-Javadoc) - * @see org.eclipse.team.ui.synchronize.IContextMenuContribution#fillContextMenu(org.eclipse.jface.action.IMenuManager) - */ - public void fillContextMenu(IMenuManager manager) { - // Nothing to add to context menu + super.initialize(configuration); } public void setActionBars(IActionBars actionBars) { IToolBarManager toolbar = actionBars.getToolBarManager(); - if (toolbar != null) { + if (toolbar != null && toolbar.find(WorkspaceSynchronizeParticipant.ACTION_GROUP) != null) { toolbar.add(new Separator()); - toolbar.add(updateToolbar); - toolbar.add(commitToolbar); + toolbar.appendToGroup(WorkspaceSynchronizeParticipant.ACTION_GROUP, updateToolbar); + toolbar.appendToGroup(WorkspaceSynchronizeParticipant.ACTION_GROUP, commitToolbar); } } /* (non-Javadoc) - * @see org.eclipse.team.ui.synchronize.IContextMenuContribution#dispose() - */ - public void dispose() { - // Nothing needs to be disposed - } - - /** - * Invoked when the model shown by the page's view changes - */ - protected void inputChanged(Object o) { - if (o instanceof ISynchronizeModelElement) { - final ISynchronizeModelElement input = (ISynchronizeModelElement)o; - input.addCompareInputChangeListener(new ICompareInputChangeListener() { - public void compareInputChanged(ICompareInput source) { - modelChanged(input); - } - }); - modelChanged(input); - } - } - - /** - * @param element + * @see org.eclipse.team.internal.ccvs.ui.subscriber.CVSParticipantActionContribution#modelChanged(org.eclipse.team.ui.synchronize.ISynchronizeModelElement) */ - public void modelChanged(ISynchronizeModelElement element) { + protected void modelChanged(ISynchronizeModelElement element) { commitToolbar.setSelection(element); updateToolbar.setSelection(element); } diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceSynchronizeAdvisor.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceSynchronizeAdvisor.java deleted file mode 100644 index 56018232d..000000000 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/WorkspaceSynchronizeAdvisor.java +++ /dev/null @@ -1,74 +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.jface.action.IToolBarManager; -import org.eclipse.jface.action.Separator; -import org.eclipse.jface.viewers.StructuredViewer; -import org.eclipse.team.core.synchronize.SyncInfoTree; -import org.eclipse.team.internal.ccvs.ui.Policy; -import org.eclipse.team.internal.ui.Utils; -import org.eclipse.team.internal.ui.synchronize.ActionDelegateWrapper; -import org.eclipse.team.ui.synchronize.subscribers.DirectionFilterActionGroup; -import org.eclipse.team.ui.synchronize.subscribers.SubscriberPageConfiguration; -import org.eclipse.ui.IActionBars; - -public class WorkspaceSynchronizeAdvisor extends CVSSynchronizeViewerAdvisor { - - private DirectionFilterActionGroup modes; - private ActionDelegateWrapper commitToolbar; - private ActionDelegateWrapper updateToolbar; - - public WorkspaceSynchronizeAdvisor(SubscriberPageConfiguration configuration, SyncInfoTree syncInfoTree) { - super(configuration, syncInfoTree); - } - - /* (non-Javadoc) - * @see org.eclipse.team.ui.synchronize.subscriber.SynchronizeViewerAdvisor#initializeActions(org.eclipse.jface.viewers.StructuredViewer) - */ - protected void initializeActions(StructuredViewer treeViewer) { - super.initializeActions(treeViewer); - - SubscriberPageConfiguration configuration = getConfiguration(); - configuration.setSupportedModes(SubscriberPageConfiguration.ALL_MODES); - modes = new DirectionFilterActionGroup(configuration); - - commitToolbar = new ActionDelegateWrapper(new SubscriberCommitAction(), getSynchronizeView()); - WorkspaceUpdateAction action = new WorkspaceUpdateAction(); - action.setPromptBeforeUpdate(true); - updateToolbar = new ActionDelegateWrapper(action, getSynchronizeView()); - - Utils.initAction(commitToolbar, "action.SynchronizeViewCommit.", Policy.getBundle()); //$NON-NLS-1$ - Utils.initAction(updateToolbar, "action.SynchronizeViewUpdate.", Policy.getBundle()); //$NON-NLS-1$ - } - - /* (non-Javadoc) - * @see org.eclipse.team.ui.synchronize.viewers.StructuredViewerAdvisor#setActionBars(org.eclipse.ui.IActionBars) - */ - public void setActionBars(IActionBars actionBars) { - super.setActionBars(actionBars); - IToolBarManager toolbar = actionBars.getToolBarManager(); - if (toolbar != null) { - modes.fillToolBar(toolbar); - toolbar.add(new Separator()); - toolbar.add(updateToolbar); - toolbar.add(commitToolbar); - } - } - - /* (non-Javadoc) - * @see org.eclipse.team.internal.ccvs.ui.subscriber.CVSSynchronizeViewerAdvisor#getActionDelegates() - */ - protected ActionDelegateWrapper[] getActionDelegates() { - // Returned so that the superclass will forward model changes - return new ActionDelegateWrapper[] { commitToolbar, updateToolbar }; - } -}
\ 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 c97d6b1da..c1d2c5f71 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 @@ -13,6 +13,7 @@ package org.eclipse.team.internal.ccvs.ui.subscriber; import org.eclipse.team.core.subscribers.Subscriber; import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin; import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration; +import org.eclipse.team.ui.synchronize.subscribers.ISubscriberPageConfiguration; import org.eclipse.team.ui.synchronize.subscribers.SubscriberParticipant; import org.eclipse.ui.IMemento; import org.eclipse.ui.PartInitException; @@ -22,10 +23,10 @@ public class WorkspaceSynchronizeParticipant extends SubscriberParticipant { public static final String ID = "org.eclipse.team.cvs.ui.cvsworkspace-participant"; //$NON-NLS-1$ /** - * The id of a generic action group to which additions actions can + * The id of a workspace action group to which additions actions can * be added. */ - public static final String ACTION_GROUP = "actions"; //$NON-NLS-1$ + public static final String ACTION_GROUP = "cvs_workspace_actions"; //$NON-NLS-1$ /* (non-Javadoc) * @see org.eclipse.team.ui.synchronize.ISynchronizeParticipant#init(org.eclipse.ui.IMemento) @@ -40,16 +41,12 @@ public class WorkspaceSynchronizeParticipant extends SubscriberParticipant { * @see org.eclipse.team.ui.synchronize.subscribers.SubscriberParticipant#initializeConfiguration(org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration) */ protected void initializeConfiguration(ISynchronizePageConfiguration configuration) { - configuration.setProperty(TOOLBAR_MENU, new String[] { SYNCHRONIZE_GROUP, NAVIGATE_GROUP, MODE_GROUP, ACTION_GROUP}); - configuration.setProperty(CONTEXT_MENU, new String[] { FILE_GROUP, EDIT_GROUP, SYNCHRONIZE_GROUP, NAVIGATE_GROUP, OBJECT_CONTRIBUTIONS_GROUP}); + configuration.setProperty(ISynchronizePageConfiguration.P_TOOLBAR_MENU, new String[] { + ISynchronizePageConfiguration.SYNCHRONIZE_GROUP, + ISynchronizePageConfiguration.NAVIGATE_GROUP, + ISynchronizePageConfiguration.MODE_GROUP, + ACTION_GROUP}); configuration.addActionContribution(new WorkspaceParticipantActionContributions()); - } - - - /* (non-Javadoc) - * @see org.eclipse.team.ui.synchronize.subscribers.SubscriberParticipant#validateConfiguration(org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration) - */ - protected void validateConfiguration(ISynchronizePageConfiguration configuration) { - // TODO May need to ensure that certain menu groups are still there? + ((ISubscriberPageConfiguration)configuration).setSupportedModes(ISubscriberPageConfiguration.ALL_MODES); } }
\ No newline at end of file diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/RefreshUserNotificationPolicy.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/RefreshUserNotificationPolicy.java index 7f18f9459..d9f1a3f14 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/RefreshUserNotificationPolicy.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/RefreshUserNotificationPolicy.java @@ -1,7 +1,6 @@ package org.eclipse.team.internal.ui.synchronize; import java.util.*; - import org.eclipse.compare.CompareUI; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.*; @@ -9,9 +8,11 @@ import org.eclipse.swt.widgets.Shell; import org.eclipse.team.core.synchronize.SyncInfo; import org.eclipse.team.internal.ui.*; import org.eclipse.team.ui.TeamUI; -import org.eclipse.team.ui.synchronize.*; +import org.eclipse.team.ui.synchronize.ISynchronizeView; +import org.eclipse.team.ui.synchronize.SyncInfoCompareInput; import org.eclipse.team.ui.synchronize.subscribers.*; import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.internal.WorkbenchPlugin; import org.eclipse.ui.progress.UIJob; /** @@ -48,7 +49,7 @@ public class RefreshUserNotificationPolicy implements IRefreshSubscriberListener */ public Runnable refreshDone(final IRefreshEvent event) { // Ensure that this event was generated for this participant - if (event.getSubscriber() != participant.getSubscriber()) return; + if (event.getSubscriber() != participant.getSubscriber()) return null; // If the event is for a cancelled operation, there's nothing to do int severity = event.getStatus().getSeverity(); if(severity == Status.CANCEL || severity == Status.ERROR) return null; diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/subscribers/SubscriberActionContribution.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/subscribers/SubscriberActionContribution.java index ccd1dcf33..a7459c1e4 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/subscribers/SubscriberActionContribution.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/subscribers/SubscriberActionContribution.java @@ -60,7 +60,7 @@ public class SubscriberActionContribution implements IActionContribution { public void run() { IStructuredSelection selection = (IStructuredSelection)site.getSelectionProvider().getSelection(); IResource[] resources = Utils.getResources(selection.toArray()); - participant.refresh(resources, participant.getRefreshListeners().createSynchronizeViewListener(participant), Policy.bind("Participant.synchronizing"), site.getWorkbenchSite()); //$NON-NLS-1$ + participant.refresh(resources, Policy.bind("Participant.synchronizing"), site.getWorkbenchSite()); //$NON-NLS-1$ } }; Utils.initAction(refreshSelectionAction, "action.refreshWithRemote."); //$NON-NLS-1$ diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/subscribers/SubscriberParticipant.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/subscribers/SubscriberParticipant.java index a3476826b..d1fba96d7 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/subscribers/SubscriberParticipant.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/subscribers/SubscriberParticipant.java @@ -115,7 +115,9 @@ public abstract class SubscriberParticipant extends AbstractSynchronizeParticipa * a chance to validate those changes before the page is created. * @param configuration the page configuration that is about to be used to create a page. */ - protected abstract void validateConfiguration(ISynchronizePageConfiguration configuration); + protected void validateConfiguration(ISynchronizePageConfiguration configuration) { + // Do nothing by default + } /* (non-Javadoc) * @see org.eclipse.team.ui.synchronize.ISynchronizeParticipant#createRefreshPage() |