diff options
author | Michael Valenta | 2004-10-05 16:16:35 +0000 |
---|---|---|
committer | Michael Valenta | 2004-10-05 16:16:35 +0000 |
commit | 4f35f42ef0f447e35fb0e8df2f9e2ec4e0662aaa (patch) | |
tree | 35d1c704d7cd5941abbe7b0d122bda43976def9e | |
parent | 042834e6eed37d2c6a145c6745a45ed010e6d241 (diff) | |
download | eclipse.platform.team-4f35f42ef0f447e35fb0e8df2f9e2ec4e0662aaa.tar.gz eclipse.platform.team-4f35f42ef0f447e35fb0e8df2f9e2ec4e0662aaa.tar.xz eclipse.platform.team-4f35f42ef0f447e35fb0e8df2f9e2ec4e0662aaa.zip |
*** empty log message ***
9 files changed, 155 insertions, 77 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSChangeSetCapability.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSChangeSetCapability.java index bd0f5d920..892fc09e7 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSChangeSetCapability.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSChangeSetCapability.java @@ -10,6 +10,8 @@ *******************************************************************************/ package org.eclipse.team.internal.ccvs.ui.subscriber; +import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin; +import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants; import org.eclipse.team.ui.synchronize.*; @@ -42,4 +44,11 @@ public class CVSChangeSetCapability extends ChangeSetCapability { public SynchronizePageActionGroup getActionGroup() { return new CVSChangeSetActionGroup(); } + + /* (non-Javadoc) + * @see org.eclipse.team.ui.synchronize.ChangeSetCapability#enableChangeSetsByDefault() + */ + public boolean enableChangeSetsByDefault() { + return CVSUIPlugin.getPlugin().getPreferenceStore().getBoolean(ICVSUIConstants.PREF_COMMIT_SET_DEFAULT_ENABLEMENT); + } }
\ No newline at end of file diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSChangeSetCollector.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSChangeSetCollector.java index 7ae06c720..7fd4ca34b 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSChangeSetCollector.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/CVSChangeSetCollector.java @@ -264,7 +264,7 @@ public class CVSChangeSetCollector extends SyncInfoSetChangeSetCollector { public void run() { addLogEntries(infos, logs, Policy.subMonitorFor(monitor, 10)); } - }); + }, true /* preserver expansion */); } /** diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizeModelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizeModelProvider.java index 6271b11e8..57f988b1f 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizeModelProvider.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizeModelProvider.java @@ -318,6 +318,95 @@ public abstract class AbstractSynchronizeModelProvider implements ISynchronizeMo */ protected abstract boolean hasViewerState(); + /* + * Return all the resources that are expanded in the page. + * This method should only be called in the UI thread + * after validating that the viewer is still valid. + */ + protected IResource[] getExpandedResources() { + final StructuredViewer viewer = getViewer(); + Object[] objects = ((AbstractTreeViewer) viewer).getVisibleExpandedElements(); + return getResources(objects); + } + + /* + * Expand the resources if they appear in the page. + * This method should only be called in the UI thread + * after validating that the viewer is still valid. + */ + protected void expandResources(IResource[] resources) { + Set expandedElements = new HashSet(); + StructuredViewer viewer = getViewer(); + for (int j = 0; j < resources.length; j++) { + IResource resource = resources[j]; + ISynchronizeModelElement[] elements = getModelObjects(resource); + for (int i = 0; i < elements.length; i++) { + ISynchronizeModelElement element = elements[i]; + // Add all parents of the element to the expansion set + while (element != null) { + expandedElements.add(element); + element = (ISynchronizeModelElement)element.getParent(); + } + } + } + ((AbstractTreeViewer) viewer).setExpandedElements(expandedElements.toArray()); + } + + private ISynchronizeModelElement[] getModelElements(IResource[] resources) { + Set result = new HashSet(); + for (int j = 0; j < resources.length; j++) { + IResource resource = resources[j]; + ISynchronizeModelElement[] elements = getModelObjects(resource); + for (int i = 0; i < elements.length; i++) { + ISynchronizeModelElement element = elements[i]; + result.add(element); + } + } + return (ISynchronizeModelElement[]) result.toArray(new ISynchronizeModelElement[result.size()]); + } + + protected IResource[] getResources(Object[] objects) { + Set result = new HashSet(); + if (objects.length > 0) { + for (int i = 0; i < objects.length; i++) { + if (objects[i] instanceof ISynchronizeModelElement) { + IResource resource = ((ISynchronizeModelElement)objects[i]).getResource(); + if(resource != null) + result.add(resource); + } + } + } + return (IResource[]) result.toArray(new IResource[result.size()]); + } + + private void cacheResources(IResource[] resources, String configProperty) { + if (resources.length > 0) { + ISynchronizePageConfiguration config = getConfiguration(); + ArrayList paths = new ArrayList(); + for (int i = 0; i < resources.length; i++) { + IResource resource = resources[i]; + paths.add(resource.getFullPath().toString()); + } + config.setProperty(configProperty, paths); + } + } + + private IResource[] getCachedResources(String configProperty) { + List paths = (List)getConfiguration().getProperty(configProperty); + IContainer container = ResourcesPlugin.getWorkspace().getRoot(); + ArrayList resources = new ArrayList(); + if (paths != null) { + for (Iterator it = paths.iterator(); it.hasNext();) { + String path = (String) it.next(); + IResource resource = getResourceForPath(container, path); + if (resource != null) { + resources.add(resource); + } + } + } + return (IResource[]) resources.toArray(new IResource[resources.size()]); + } + /** * Save the viewer state (expansion and selection) */ @@ -325,46 +414,20 @@ public abstract class AbstractSynchronizeModelProvider implements ISynchronizeMo // save visible expanded elements and selection final StructuredViewer viewer = getViewer(); if (viewer != null && !viewer.getControl().isDisposed() && viewer instanceof AbstractTreeViewer) { - final Object[][] expandedElements = new Object[1][1]; - final Object[][] selectedElements = new Object[1][1]; + final IResource[][] expandedResources = new IResource[1][1]; + final IResource[][] selectedResources = new IResource[1][1]; viewer.getControl().getDisplay().syncExec(new Runnable() { public void run() { if (viewer != null && !viewer.getControl().isDisposed()) { - expandedElements[0] = ((AbstractTreeViewer) viewer).getVisibleExpandedElements(); - selectedElements[0] = ((IStructuredSelection) viewer.getSelection()).toArray(); + expandedResources[0] = getExpandedResources(); + selectedResources[0] = getResources(((IStructuredSelection) viewer.getSelection()).toArray()); } } }); - // - // Save expansion - // - if (expandedElements[0].length > 0) { - ISynchronizePageConfiguration config = getConfiguration(); - ArrayList savedExpansionState = new ArrayList(); - for (int i = 0; i < expandedElements[0].length; i++) { - if (expandedElements[0][i] instanceof ISynchronizeModelElement) { - IResource resource = ((ISynchronizeModelElement) expandedElements[0][i]).getResource(); - if(resource != null) - savedExpansionState.add(resource.getFullPath().toString()); - } - } - config.setProperty(P_VIEWER_EXPANSION_STATE, savedExpansionState); - } - // - // Save selection - // - if (selectedElements[0].length > 0) { - ISynchronizePageConfiguration config = getConfiguration(); - ArrayList savedSelectedState = new ArrayList(); - for (int i = 0; i < selectedElements[0].length; i++) { - if (selectedElements[0][i] instanceof ISynchronizeModelElement) { - IResource resource = ((ISynchronizeModelElement) selectedElements[0][i]).getResource(); - if(resource != null) - savedSelectedState.add(resource.getFullPath().toString()); - } - } - config.setProperty(P_VIEWER_SELECTION_STATE, savedSelectedState); - } + + // Save expansion and selection + cacheResources(expandedResources[0], P_VIEWER_EXPANSION_STATE); + cacheResources(selectedResources[0], P_VIEWER_SELECTION_STATE); } } @@ -376,43 +439,30 @@ public abstract class AbstractSynchronizeModelProvider implements ISynchronizeMo // restore expansion state and selection state final StructuredViewer viewer = getViewer(); if (viewer != null && !viewer.getControl().isDisposed() && viewer instanceof AbstractTreeViewer) { - List savedExpansionState = (List)getConfiguration().getProperty(P_VIEWER_EXPANSION_STATE); - List savedSelectionState = (List)getConfiguration().getProperty(P_VIEWER_SELECTION_STATE); - IContainer container = ResourcesPlugin.getWorkspace().getRoot(); - final ArrayList expandedElements = new ArrayList(); - if (savedExpansionState != null) { - for (Iterator it = savedExpansionState.iterator(); it.hasNext();) { - String path = (String) it.next(); - IResource resource = getResourceForPath(container, path); - ISynchronizeModelElement[] elements = getModelObjects(resource); - for (int i = 0; i < elements.length; i++) { - ISynchronizeModelElement element = elements[i]; - // Add all parents of the element to the expansion set - while (element != null) { - expandedElements.add(element); - element = (ISynchronizeModelElement)element.getParent(); - } - } - } - } - final ArrayList selectedElements = new ArrayList(); - if (savedSelectionState != null) { - for (Iterator it = savedSelectionState.iterator(); it.hasNext();) { - String path = (String) it.next(); - IResource resource = getResourceForPath(container, path); - ISynchronizeModelElement[] elements = getModelObjects(resource); - // Only preserve the selection if there is one element for the resource - if (elements.length == 1) { - selectedElements.add(elements[0]); - } - } - } - ((AbstractTreeViewer) viewer).setExpandedElements(expandedElements.toArray()); - viewer.setSelection(new StructuredSelection(selectedElements)); + IResource[] resourcesToExpand = getCachedResources(P_VIEWER_EXPANSION_STATE); + IResource[] resourcesToSelect = getCachedResources(P_VIEWER_SELECTION_STATE); + expandResources(resourcesToExpand); + selectResources(resourcesToSelect); } } - /* + private void selectResources(IResource[] resourcesToSelect) { + StructuredViewer viewer = getViewer(); + final ArrayList selectedElements = new ArrayList(); + if (resourcesToSelect != null) { + for (int i = 0; i < resourcesToSelect.length; i++) { + IResource resource = resourcesToSelect[i]; + ISynchronizeModelElement[] elements = getModelObjects(resource); + // Only preserve the selection if there is one element for the resource + if (elements.length == 1) { + selectedElements.add(elements[0]); + } + } + } + viewer.setSelection(new StructuredSelection(selectedElements)); + } + + /* * Convert a path to a resource by first looking in the resource * tree and, if that fails, by using the path format to create * a handle. diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ActiveChangeSetCollector.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ActiveChangeSetCollector.java index 776554889..e8e8964ee 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ActiveChangeSetCollector.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ActiveChangeSetCollector.java @@ -204,7 +204,7 @@ public class ActiveChangeSetCollector implements ISyncInfoSetChangeListener { } } } - }); + }, true /* preserver expansion */); } /* (non-Javadoc) @@ -224,7 +224,7 @@ public class ActiveChangeSetCollector implements ISyncInfoSetChangeListener { } } } - }); + }, true /* preserver expansion */); } private ChangeSet getChangeSet(SyncInfoSet set) { diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ChangeSetModelManager.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ChangeSetModelManager.java index 2f1340c22..61b1de084 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ChangeSetModelManager.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ChangeSetModelManager.java @@ -147,7 +147,7 @@ public class ChangeSetModelManager extends HierarchicalModelManager implements I // Load our setting before invoking super since the inherited // initialize will create the provider IDialogSettings pageSettings = getConfiguration().getSite().getPageSettings(); - // TODO enabled = TeamUIPlugin.getPlugin().getPreferenceStore().getBoolean(ICVSUIConstants.PREF_COMMIT_SET_DEFAULT_ENABLEMENT); + enabled = getConfiguration().getParticipant().getChangeSetCapability().enableChangeSetsByDefault(); if(pageSettings != null && pageSettings.get(P_COMMIT_SET_ENABLED) != null) { enabled = pageSettings.getBoolean(P_COMMIT_SET_ENABLED); } diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ChangeSetModelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ChangeSetModelProvider.java index 67c73be27..bbcf139ba 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ChangeSetModelProvider.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/ChangeSetModelProvider.java @@ -281,8 +281,17 @@ public class ChangeSetModelProvider extends CompositeModelProvider { /* (non-Javadoc) * @see org.eclipse.team.internal.ui.synchronize.AbstractSynchronizeModelProvider#runViewUpdate(java.lang.Runnable) */ - public void runViewUpdate(Runnable runnable) { - super.runViewUpdate(runnable); + public void runViewUpdate(final Runnable runnable, final boolean preserveExpansion) { + runViewUpdate(new Runnable() { + public void run() { + IResource[] resources = null; + if (preserveExpansion) + resources = getExpandedResources(); + runnable.run(); + if (resources != null) + expandResources(resources); + } + }); } /* (non-Javadoc) diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/actions/ChangeSetActionGroup.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/actions/ChangeSetActionGroup.java index d14c0fc70..58d605170 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/actions/ChangeSetActionGroup.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/actions/ChangeSetActionGroup.java @@ -34,7 +34,7 @@ import org.eclipse.ui.actions.BaseSelectionListenerAction; * This action group contributes actions that support the management * of Change sets to a synchronize page. */ -public final class ChangeSetActionGroup extends SynchronizePageActionGroup { +public class ChangeSetActionGroup extends SynchronizePageActionGroup { /** * Menu group that can be added to the context menu diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/ChangeSetCapability.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/ChangeSetCapability.java index 69697b92d..932393d6d 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/ChangeSetCapability.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/ChangeSetCapability.java @@ -140,5 +140,15 @@ public abstract class ChangeSetCapability { return supportsActiveChangeSets() && configuration.getMode() == ISynchronizePageConfiguration.OUTGOING_MODE; } + + /** + * Return whether change sets should be enabled by default on pages + * that display the participant. + * @return whether change sets should be enabled by default on pages + * that display the participant + */ + public boolean enableChangeSetsByDefault() { + return false; + } } diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/SyncInfoSetChangeSetCollector.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/SyncInfoSetChangeSetCollector.java index ce7e0b7c1..f9bc5ec9d 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/SyncInfoSetChangeSetCollector.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/synchronize/SyncInfoSetChangeSetCollector.java @@ -157,8 +157,8 @@ public abstract class SyncInfoSetChangeSetCollector extends ChangeSetCollector { return configuration; } - protected void runViewUpdate(Runnable runnable) { - provider.runViewUpdate(runnable); + protected void runViewUpdate(Runnable runnable, boolean preserveExpansion) { + provider.runViewUpdate(runnable, preserveExpansion); } /* (non-javadoc) |