diff options
author | Jean Michel-Lemieux | 2004-03-16 21:11:41 +0000 |
---|---|---|
committer | Jean Michel-Lemieux | 2004-03-16 21:11:41 +0000 |
commit | 0de9583bf935d2c4938765fe688062ea8df9e3db (patch) | |
tree | 36de09c510c1b7093e9f9c2f52e4c5c0f4613cdf /bundles/org.eclipse.team.ui/src | |
parent | d4b8d0ac3b1b133cd0f49ec25b5fc9165c488a3c (diff) | |
download | eclipse.platform.team-0de9583bf935d2c4938765fe688062ea8df9e3db.tar.gz eclipse.platform.team-0de9583bf935d2c4938765fe688062ea8df9e3db.tar.xz eclipse.platform.team-0de9583bf935d2c4938765fe688062ea8df9e3db.zip |
Refactored model ui parts
Diffstat (limited to 'bundles/org.eclipse.team.ui/src')
-rw-r--r-- | bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java | 6 | ||||
-rw-r--r-- | bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ActionDelegateManager.java | 72 | ||||
-rw-r--r-- | bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ChangesSection.java | 8 | ||||
-rw-r--r-- | bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/CompressedFoldersModelProvider.java | 14 | ||||
-rw-r--r-- | bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/DiffNodeWorkbenchAdapter.java | 6 | ||||
-rw-r--r-- | bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/HierarchicalModelProvider.java | 31 | ||||
-rw-r--r-- | bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SubscriberParticipantPage.java (renamed from bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/subscriber/SubscriberParticipantPage.java) | 25 |
7 files changed, 116 insertions, 46 deletions
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java index 61ebefdb7..7920335a3 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java @@ -32,7 +32,7 @@ import org.eclipse.team.core.synchronize.SyncInfo; import org.eclipse.team.core.variants.IResourceVariant; import org.eclipse.team.ui.TeamImages; import org.eclipse.team.ui.synchronize.subscriber.SubscriberParticipant; -import org.eclipse.team.ui.synchronize.viewers.SynchronizeModelElement; +import org.eclipse.team.ui.synchronize.viewers.ISynchronizeModelElement; import org.eclipse.ui.*; import org.eclipse.ui.progress.IWorkbenchSiteProgressService; @@ -413,8 +413,8 @@ public class Utils { IResource resource = null; if (element instanceof IResource) { resource = (IResource)element; - } else if (element instanceof SynchronizeModelElement){ - resource = ((SynchronizeModelElement) element).getResource(); + } else if (element instanceof ISynchronizeModelElement){ + resource = ((ISynchronizeModelElement) element).getResource(); } else { resource = (IResource)getAdapter(element, IResource.class); } diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ActionDelegateManager.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ActionDelegateManager.java new file mode 100644 index 000000000..a8bd9a891 --- /dev/null +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ActionDelegateManager.java @@ -0,0 +1,72 @@ +/******************************************************************************* + * 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.ui.synchronize; + +import java.util.*; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.viewers.*; +import org.eclipse.ui.*; +import org.eclipse.ui.IActionDelegate; +import org.eclipse.ui.IViewActionDelegate; + +public class ActionDelegateManager { + + private List delegates = new ArrayList(2); + private IViewPart part; + private StructuredViewer viewer; + + public static class WrappedActionDelegate extends Action { + private IActionDelegate delegate; + private Viewer viewer; + + public WrappedActionDelegate(IActionDelegate delegate, IViewPart part, Viewer viewer) { + this.delegate = delegate; + this.viewer = viewer; + // Associate delegate with the synchronize view, this will allow + if(delegate instanceof IViewActionDelegate) { + ((IViewActionDelegate)delegate).init(part); + } + } + + public void run() { + if (viewer != null) { + ISelection selection = new StructuredSelection(viewer.getInput()); + if (!selection.isEmpty()) { + delegate.selectionChanged(this, selection); + delegate.run(this); + } + } + } + + public IActionDelegate getDelegate() { + return delegate; + } + } + + public ActionDelegateManager() { + } + + /* + * Update the enablement of any action delegates + */ + public void updateActionEnablement(Object input) { + ISelection selection = new StructuredSelection(input); + for (Iterator it = delegates.iterator(); it.hasNext(); ) { + WrappedActionDelegate delegate = (WrappedActionDelegate) it.next(); + delegate.getDelegate().selectionChanged(delegate, selection); + } + } + + public void addDelegate(WrappedActionDelegate delagate) { + delegates.add(delagate); + } +} diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ChangesSection.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ChangesSection.java index 9ef961daa..b087af928 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ChangesSection.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ChangesSection.java @@ -18,15 +18,15 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.*; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; import org.eclipse.team.core.ITeamStatus; import org.eclipse.team.core.synchronize.*; import org.eclipse.team.internal.ui.*; import org.eclipse.team.ui.ISharedImages; import org.eclipse.team.ui.synchronize.subscriber.SubscriberParticipant; -import org.eclipse.team.ui.synchronize.subscriber.SubscriberParticipantPage; import org.eclipse.team.ui.synchronize.viewers.ISynchronizeModelChangeListener; -import org.eclipse.team.ui.synchronize.viewers.SynchronizeModelElement; +import org.eclipse.team.ui.synchronize.viewers.ISynchronizeModelElement; import org.eclipse.ui.forms.HyperlinkGroup; import org.eclipse.ui.forms.events.HyperlinkAdapter; import org.eclipse.ui.forms.events.HyperlinkEvent; @@ -76,7 +76,7 @@ public class ChangesSection extends Composite { * Listen to sync set changes so that we can update message to user and totals. */ private ISynchronizeModelChangeListener changedListener = new ISynchronizeModelChangeListener() { - public void modelChanged(SynchronizeModelElement root) { + public void modelChanged(ISynchronizeModelElement root) { calculateDescription(); } }; diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/CompressedFoldersModelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/CompressedFoldersModelProvider.java index 786d85898..20bad7816 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/CompressedFoldersModelProvider.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/CompressedFoldersModelProvider.java @@ -20,7 +20,7 @@ import org.eclipse.jface.viewers.ViewerSorter; import org.eclipse.team.core.synchronize.*; import org.eclipse.team.internal.ui.TeamUIPlugin; import org.eclipse.team.ui.ISharedImages; -import org.eclipse.team.ui.synchronize.viewers.*; +import org.eclipse.team.ui.synchronize.viewers.ISynchronizeModelElement; public class CompressedFoldersModelProvider extends HierarchicalModelProvider { @@ -156,10 +156,10 @@ public class CompressedFoldersModelProvider extends HierarchicalModelProvider { /* (non-Javadoc) * @see org.eclipse.team.ui.synchronize.viewers.HierarchicalModelProvider#createModelObject(org.eclipse.compare.structuremergeviewer.DiffNode, org.eclipse.core.resources.IResource) */ - protected SynchronizeModelElement createModelObject(SynchronizeModelElement parent, IResource resource) { + protected ISynchronizeModelElement createModelObject(ISynchronizeModelElement parent, IResource resource) { if (resource.getType() == IResource.FOLDER) { SyncInfo info = getSyncInfoTree().getSyncInfo(resource); - SynchronizeModelElement newNode; + ISynchronizeModelElement newNode; if(info != null) { newNode = new CompressedFolderDiffNode(parent, info); } else { @@ -187,12 +187,12 @@ public class CompressedFoldersModelProvider extends HierarchicalModelProvider { private void addResource(SyncInfo info) { IResource local = info.getLocal(); - SynchronizeModelElement existingNode = getModelObject(local); + ISynchronizeModelElement existingNode = getModelObject(local); if (existingNode == null) { if (local.getType() == IResource.FILE) { - SynchronizeModelElement parentNode = getModelObject(local.getParent()); + ISynchronizeModelElement parentNode = getModelObject(local.getParent()); if (parentNode == null) { - SynchronizeModelElement projectNode = getModelObject(local.getProject()); + ISynchronizeModelElement projectNode = getModelObject(local.getProject()); if (projectNode == null) { projectNode = createModelObject(getModelRoot(), local.getProject()); } @@ -204,7 +204,7 @@ public class CompressedFoldersModelProvider extends HierarchicalModelProvider { } createModelObject(parentNode, local); } else { - SynchronizeModelElement projectNode = getModelObject(local.getProject()); + ISynchronizeModelElement projectNode = getModelObject(local.getProject()); if (projectNode == null) { projectNode = createModelObject(getModelRoot(), local.getProject()); } diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/DiffNodeWorkbenchAdapter.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/DiffNodeWorkbenchAdapter.java index ea3991bb8..c9271bbbc 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/DiffNodeWorkbenchAdapter.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/DiffNodeWorkbenchAdapter.java @@ -12,7 +12,7 @@ package org.eclipse.team.internal.ui.synchronize; import org.eclipse.compare.structuremergeviewer.DiffNode; import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.team.ui.synchronize.viewers.SynchronizeModelElement; +import org.eclipse.team.ui.synchronize.viewers.ISynchronizeModelElement; import org.eclipse.ui.model.IWorkbenchAdapter; public class DiffNodeWorkbenchAdapter implements IWorkbenchAdapter { @@ -30,8 +30,8 @@ public class DiffNodeWorkbenchAdapter implements IWorkbenchAdapter { */ public ImageDescriptor getImageDescriptor(Object o) { DiffNode node = getDiffNode(o); - if(node instanceof SynchronizeModelElement) { - return ((SynchronizeModelElement)node).getImageDescriptor(o); + if(node instanceof ISynchronizeModelElement) { + return ((ISynchronizeModelElement)node).getImageDescriptor(o); } return null; } diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/HierarchicalModelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/HierarchicalModelProvider.java index 7ecfb3a56..00665e21b 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/HierarchicalModelProvider.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/HierarchicalModelProvider.java @@ -16,7 +16,7 @@ import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.jface.viewers.AbstractTreeViewer; import org.eclipse.jface.viewers.ViewerSorter; import org.eclipse.team.core.synchronize.*; -import org.eclipse.team.ui.synchronize.viewers.*; +import org.eclipse.team.ui.synchronize.viewers.ISynchronizeModelElement; /** * An input that can be used with both {@link } and @@ -61,7 +61,7 @@ public class HierarchicalModelProvider extends SynchronizeModelProvider { * @param container * @return */ - protected IDiffElement[] createModelObjects(SynchronizeModelElement container) { + protected IDiffElement[] createModelObjects(ISynchronizeModelElement container) { IResource resource = null; if (container == getModelRoot()) { resource = ResourcesPlugin.getWorkspace().getRoot(); @@ -71,7 +71,7 @@ public class HierarchicalModelProvider extends SynchronizeModelProvider { if(resource != null) { SyncInfoTree infoTree = getSyncInfoTree(); IResource[] children = infoTree.members(resource); - SynchronizeModelElement[] nodes = new SynchronizeModelElement[children.length]; + ISynchronizeModelElement[] nodes = new ISynchronizeModelElement[children.length]; for (int i = 0; i < children.length; i++) { nodes[i] = createModelObject(container, children[i]); } @@ -80,7 +80,7 @@ public class HierarchicalModelProvider extends SynchronizeModelProvider { return new IDiffElement[0]; } - protected SynchronizeModelElement createModelObject(SynchronizeModelElement parent, IResource resource) { + protected ISynchronizeModelElement createModelObject(ISynchronizeModelElement parent, IResource resource) { SyncInfo info = getSyncInfoTree().getSyncInfo(resource); SynchronizeModelElement newNode; if(info != null) { @@ -112,9 +112,9 @@ public class HierarchicalModelProvider extends SynchronizeModelProvider { * @param diffNode the diff node to be changed * @param info the new sync info for the diff node */ - protected void handleChange(SynchronizeModelElement diffNode, SyncInfo info) { + protected void handleChange(ISynchronizeModelElement diffNode, SyncInfo info) { IResource local = info.getLocal(); - // TODO: Get any additional sync bits + if(diffNode instanceof SyncInfoModelElement) { boolean wasConflict = isConflicting(diffNode); // The update preserves any of the additional sync info bits @@ -130,20 +130,19 @@ public class HierarchicalModelProvider extends SynchronizeModelProvider { removeFromViewer(local); addResources(new IResource[] {local}); } - // TODO: set any additional sync info bits } protected void addResources(IResource[] added) { for (int i = 0; i < added.length; i++) { IResource resource = added[i]; - SynchronizeModelElement node = getModelObject(resource); + ISynchronizeModelElement node = getModelObject(resource); if (node != null) { // Somehow the node exists. Remove it and read it to ensure // what is shown matches the contents of the sync set removeFromViewer(resource); } // Build the sub-tree rooted at this node - SynchronizeModelElement parent = getModelObject(resource.getParent()); + ISynchronizeModelElement parent = getModelObject(resource.getParent()); if (parent != null) { node = createModelObject(parent, resource); buildModelObjects(node); @@ -154,12 +153,12 @@ public class HierarchicalModelProvider extends SynchronizeModelProvider { /* (non-Javadoc) * @see org.eclipse.team.ui.synchronize.viewers.SynchronizeModelProvider#buildModelObjects(org.eclipse.team.ui.synchronize.viewers.SynchronizeModelElement) */ - protected IDiffElement[] buildModelObjects(SynchronizeModelElement node) { + protected IDiffElement[] buildModelObjects(ISynchronizeModelElement node) { IDiffElement[] children = createModelObjects(node); for (int i = 0; i < children.length; i++) { IDiffElement element = children[i]; - if (element instanceof SynchronizeModelElement) { - buildModelObjects((SynchronizeModelElement) element); + if (element instanceof ISynchronizeModelElement) { + buildModelObjects((ISynchronizeModelElement) element); } } return children; @@ -168,7 +167,7 @@ public class HierarchicalModelProvider extends SynchronizeModelProvider { /* (non-Javadoc) * @see org.eclipse.team.ui.synchronize.viewers.SynchronizeModelProvider#doAdd(org.eclipse.team.ui.synchronize.viewers.SynchronizeModelElement, org.eclipse.team.ui.synchronize.viewers.SynchronizeModelElement) */ - protected void doAdd(SynchronizeModelElement parent, SynchronizeModelElement element) { + protected void doAdd(ISynchronizeModelElement parent, ISynchronizeModelElement element) { AbstractTreeViewer viewer = (AbstractTreeViewer)getViewer(); viewer.add(parent, element); } @@ -176,7 +175,7 @@ public class HierarchicalModelProvider extends SynchronizeModelProvider { /* (non-Javadoc) * @see org.eclipse.team.ui.synchronize.viewers.SynchronizeModelProvider#doRemove(org.eclipse.team.ui.synchronize.viewers.SynchronizeModelElement) */ - protected void doRemove(SynchronizeModelElement element) { + protected void doRemove(ISynchronizeModelElement element) { AbstractTreeViewer viewer = (AbstractTreeViewer)getViewer(); viewer.remove(element); } @@ -198,7 +197,7 @@ public class HierarchicalModelProvider extends SynchronizeModelProvider { for (int i = 0; i < infos.length; i++) { SyncInfo info = infos[i]; IResource local = info.getLocal(); - SynchronizeModelElement diffNode = getModelObject(local); + ISynchronizeModelElement diffNode = getModelObject(local); if (diffNode != null) { handleChange(diffNode, info); } @@ -220,7 +219,7 @@ public class HierarchicalModelProvider extends SynchronizeModelProvider { for (int i = 0; i < removedResources.length; i++) { IResource resource = removedResources[i]; if (resource.getType() != IResource.FILE) { - SynchronizeModelElement node = getModelObject(resource); + ISynchronizeModelElement node = getModelObject(resource); if (node != null) { removeFromViewer(resource); addResources(new IResource[] {resource}); diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/subscriber/SubscriberParticipantPage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SubscriberParticipantPage.java index a385ae517..47e360b1c 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/subscriber/SubscriberParticipantPage.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SubscriberParticipantPage.java @@ -8,7 +8,7 @@ * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ -package org.eclipse.team.ui.synchronize.subscriber; +package org.eclipse.team.internal.ui.synchronize; import org.eclipse.compare.internal.INavigatable; import org.eclipse.core.runtime.IAdaptable; @@ -22,10 +22,10 @@ import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.*; import org.eclipse.team.internal.ui.*; -import org.eclipse.team.internal.ui.synchronize.ChangesSection; -import org.eclipse.team.internal.ui.synchronize.ConfigureRefreshScheduleDialog; import org.eclipse.team.internal.ui.synchronize.actions.*; import org.eclipse.team.ui.synchronize.ISynchronizeView; +import org.eclipse.team.ui.synchronize.subscriber.SubscriberParticipant; +import org.eclipse.team.ui.synchronize.subscriber.SubscriberRefreshWizard; import org.eclipse.team.ui.synchronize.viewers.StructuredViewerAdvisor; import org.eclipse.team.ui.synchronize.viewers.TreeViewerAdvisor; import org.eclipse.ui.*; @@ -42,7 +42,7 @@ import org.eclipse.ui.part.*; * </p> * @since 3.0 */ -public class SubscriberParticipantPage implements IPageBookViewPage, IPropertyChangeListener, IAdaptable { +public final class SubscriberParticipantPage implements IPageBookViewPage, IPropertyChangeListener, IAdaptable { // Parent composite of this view. It is remembered so that we can dispose of its children when // the viewer type is switched. private Composite composite = null; @@ -64,14 +64,15 @@ public class SubscriberParticipantPage implements IPageBookViewPage, IPropertyCh private Action collapseAll; private WorkingSetFilterActionGroup workingSetGroup; private StatusLineContributionGroup statusLine; - private SynchronizeViewerAdvisor viewerAdvisor; + private StructuredViewerAdvisor viewerAdvisor; /** * Constructs a new SynchronizeView. */ - public SubscriberParticipantPage(SubscriberParticipant page, ISynchronizeView view) { + public SubscriberParticipantPage(SubscriberParticipant page, ISynchronizeView view, StructuredViewerAdvisor viewerAdvisor) { this.participant = page; this.view = view; + this.viewerAdvisor = viewerAdvisor; } /* (non-Javadoc) @@ -253,6 +254,9 @@ public class SubscriberParticipantPage implements IPageBookViewPage, IPropertyCh // status line statusLine.fillActionBars(actionBars); + + // allow the advisor to contribute + getViewerConfiguration().setActionBars(actionBars); } } @@ -310,7 +314,6 @@ public class SubscriberParticipantPage implements IPageBookViewPage, IPropertyCh } private Viewer createChangesViewer(Composite parent) { - viewerAdvisor = createSynchronizeViewerAdvisor(); TreeViewer viewer = new TreeViewerAdvisor.NavigableTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); GridData data = new GridData(GridData.FILL_BOTH); viewer.getControl().setLayoutData(data); @@ -319,19 +322,15 @@ public class SubscriberParticipantPage implements IPageBookViewPage, IPropertyCh return viewer; } - public StructuredViewerAdvisor getViewerAdviser() { + public StructuredViewerAdvisor getViewerConfiguration() { return viewerAdvisor; } public Viewer getViewer() { return changesViewer; } - - protected SynchronizeViewerAdvisor createSynchronizeViewerAdvisor() { - return new SynchronizeViewerAdvisor(getSynchronizeView(), getParticipant()); - } public void setSelection(Object[] objects, boolean reveal) { - getViewerAdviser().setSelection(objects, reveal); + getViewerConfiguration().setSelection(objects, reveal); } }
\ No newline at end of file |