diff options
author | Michael Valenta | 2004-10-07 20:31:22 +0000 |
---|---|---|
committer | Michael Valenta | 2004-10-07 20:31:22 +0000 |
commit | c57a9813e59056479173ba202f8417f287e0f0ed (patch) | |
tree | b284fece53819e00b91f59cf72a0a4a5a30af3a0 | |
parent | 654b84b5b8fb74cdd723a26e8d8ce8927fa61cde (diff) | |
download | eclipse.platform.team-c57a9813e59056479173ba202f8417f287e0f0ed.tar.gz eclipse.platform.team-c57a9813e59056479173ba202f8417f287e0f0ed.tar.xz eclipse.platform.team-c57a9813e59056479173ba202f8417f287e0f0ed.zip |
A bit of tiding up after change set refactoring
4 files changed, 76 insertions, 39 deletions
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 18faf9c6b..729bae958 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 @@ -295,24 +295,44 @@ public abstract class AbstractSynchronizeModelProvider implements ISynchronizeMo if(root instanceof SynchronizeModelElement) { ((SynchronizeModelElement)root).fireChanges(); } - Utils.asyncExec(new Runnable() { - public void run() { - StructuredViewer viewer = getViewer(); - if (viewer != null && !viewer.getControl().isDisposed()) { - try { - viewer.getControl().setRedraw(false); - viewer.refresh(); - // restore expansion state - if (isRootProvider()) - restoreViewerState(); - } finally { - viewer.getControl().setRedraw(true); - } + + if (Utils.canUpdateViewer(getViewer())) { + // If we can update the viewer, that means that the view was updated + // when the model was rebuilt. + refreshModelRoot(); + } else { + Utils.asyncExec(new Runnable() { + public void run() { + refreshModelRoot(); } - } - }, getViewer()); + }, getViewer()); + } } + private void refreshModelRoot() { + StructuredViewer viewer = getViewer(); + if (viewer != null && !viewer.getControl().isDisposed()) { + try { + viewer.getControl().setRedraw(false); + if (isRootProvider()) { + // Refresh the entire view + viewer.refresh(); + } else { + // Only refresh the model root bu also ensure that + // the parents of the model root and the model root + // itself are added to the view + ((AbstractTreeViewer)viewer).add(getModelRoot().getParent(), getModelRoot()); + viewer.refresh(getModelRoot()); + } + // restore expansion state + if (isRootProvider()) + restoreViewerState(); + } finally { + viewer.getControl().setRedraw(true); + } + } + } + /** * For each node create children based on the contents of * @param node 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 225a064e1..57dec186d 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 @@ -33,7 +33,7 @@ import org.eclipse.team.ui.synchronize.*; */ public class ChangeSetModelProvider extends CompositeModelProvider { - private ViewerSorter viewerSorter = new ChangeSetModelSorter(this, ChangeSetModelSorter.COMMENT); + private ViewerSorter viewerSorter; // The id of the sub-provider private final String subProvierId; @@ -240,6 +240,9 @@ public class ChangeSetModelProvider extends CompositeModelProvider { * @see org.eclipse.team.internal.ui.synchronize.ISynchronizeModelProvider#getViewerSorter() */ public ViewerSorter getViewerSorter() { + if (viewerSorter == null) { + viewerSorter = new ChangeSetModelSorter(this, ChangeSetActionGroup.getSortCriteria(getConfiguration())); + } return viewerSorter; } 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 34681ce22..2ef675a28 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 @@ -277,8 +277,7 @@ public class CompressedFoldersModelProvider extends HierarchicalModelProvider { // but may still contain children removeFromViewer(resource); if (hasFileMembers((IContainer)resource)) { - createModelObject(getModelObject(resource.getProject()), resource); - buildModelObjects(getModelObject(resource)); + addResources(getFileMembers((IContainer)resource)); } } } @@ -315,4 +314,17 @@ public class CompressedFoldersModelProvider extends HierarchicalModelProvider { // The parent does not contain any files return false; } + + private SyncInfo[] getFileMembers(IContainer parent) { + // Check if the sync set has any file children of the parent + List result = new ArrayList(); + IResource[] members = getSyncInfoTree().members(parent); + for (int i = 0; i < members.length; i++) { + IResource member = members[i]; + if (member.getType() == IResource.FILE) { + result.add(getSyncInfoTree().getSyncInfo(member)); + } + } + return (SyncInfo[]) result.toArray(new SyncInfo[result.size()]); + } } 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 58d605170..af56e028c 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 @@ -230,6 +230,28 @@ public class ChangeSetActionGroup extends SynchronizePageActionGroup { */ private int sortCriteria = ChangeSetModelSorter.DATE; + public static int getSortCriteria(ISynchronizePageConfiguration configuration) { + int sortCriteria = ChangeSetModelSorter.DATE; + try { + IDialogSettings pageSettings = configuration.getSite().getPageSettings(); + if(pageSettings != null) { + sortCriteria = pageSettings.getInt(P_LAST_COMMENTSORT); + } + } catch(NumberFormatException e) { + // ignore and use the defaults. + } + switch (sortCriteria) { + case ChangeSetModelSorter.COMMENT: + case ChangeSetModelSorter.DATE: + case ChangeSetModelSorter.USER: + break; + default: + sortCriteria = ChangeSetModelSorter.DATE; + break; + } + return sortCriteria; + } + public ChangeSetActionGroup(ChangeSetModelProvider provider) { this.provider = provider; } @@ -238,7 +260,7 @@ public class ChangeSetActionGroup extends SynchronizePageActionGroup { super.initialize(configuration); if (getChangeSetCapability().supportsCheckedInChangeSets()) { - initializeSortCriteria(configuration); + sortCriteria = getSortCriteria(configuration); sortByComment = new MenuManager(Policy.bind("ChangeLogModelProvider.0a")); //$NON-NLS-1$ sortByComment.add(new ToggleSortOrderAction(Policy.bind("ChangeLogModelProvider.1a"), ChangeSetModelSorter.COMMENT)); //$NON-NLS-1$ sortByComment.add(new ToggleSortOrderAction(Policy.bind("ChangeLogModelProvider.2a"), ChangeSetModelSorter.DATE)); //$NON-NLS-1$ @@ -292,26 +314,6 @@ public class ChangeSetActionGroup extends SynchronizePageActionGroup { } } - private void initializeSortCriteria(ISynchronizePageConfiguration configuration) { - try { - IDialogSettings pageSettings = getConfiguration().getSite().getPageSettings(); - if(pageSettings != null) { - sortCriteria = pageSettings.getInt(P_LAST_COMMENTSORT); - } - } catch(NumberFormatException e) { - // ignore and use the defaults. - } - switch (sortCriteria) { - case ChangeSetModelSorter.COMMENT: - case ChangeSetModelSorter.DATE: - case ChangeSetModelSorter.USER: - break; - default: - sortCriteria = ChangeSetModelSorter.DATE; - break; - } - } - protected void addChangeSets(IMenuManager manager) { ChangeSet[] sets = getActiveChangeSetManager().getSets(); ISelection selection = getContext().getSelection(); |