diff options
author | Michael Valenta | 2004-03-16 21:39:26 +0000 |
---|---|---|
committer | Michael Valenta | 2004-03-16 21:39:26 +0000 |
commit | 63c9651818d0eef3f93c244842be514a11986aaf (patch) | |
tree | 77993dc5e0cc4915d9ec40aa83d76ec64ece8d10 /bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SyncSetChangedEvent.java | |
parent | 2925d223326c053676ec480def18c44c6abe7d10 (diff) | |
download | eclipse.platform.team-63c9651818d0eef3f93c244842be514a11986aaf.tar.gz eclipse.platform.team-63c9651818d0eef3f93c244842be514a11986aaf.tar.xz eclipse.platform.team-63c9651818d0eef3f93c244842be514a11986aaf.zip |
54911: outgoing change marked as a deletion in sync view
Diffstat (limited to 'bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SyncSetChangedEvent.java')
-rw-r--r-- | bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SyncSetChangedEvent.java | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SyncSetChangedEvent.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SyncSetChangedEvent.java index 1581ba012..e5885cefc 100644 --- a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SyncSetChangedEvent.java +++ b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SyncSetChangedEvent.java @@ -25,9 +25,9 @@ public class SyncSetChangedEvent implements ISyncInfoSetChangeEvent { // List that accumulate changes // SyncInfo - private Set changedResources = new HashSet(); + private Map changedResources = new HashMap(); private Set removedResources = new HashSet(); - private Set addedResources = new HashSet(); + private Map addedResources = new HashMap(); private boolean reset = false; @@ -46,32 +46,38 @@ public class SyncSetChangedEvent implements ISyncInfoSetChangeEvent { removedResources.remove(info.getLocal()); changed(info); } else { - addedResources.add(info); + addedResources.put(info.getLocal(), info); } } public void removed(IResource resource, SyncInfo info) { - if (changedResources.contains(info)) { + if (changedResources.containsKey(resource)) { // No use in reporting the change since it has subsequently been removed - changedResources.remove(info); - } else if (addedResources.contains(info)) { + changedResources.remove(resource); + } else if (addedResources.containsKey(resource)) { // An addition followed by a removal can be dropped - addedResources.remove(info); + addedResources.remove(resource); return; } removedResources.add(resource); } public void changed(SyncInfo info) { - changedResources.add(info); + IResource resource = info.getLocal(); + if (addedResources.containsKey(resource)) { + // An addition followed by a change is an addition + addedResources.put(info.getLocal(), info); + return; + } + changedResources.put(info.getLocal(), info); } public SyncInfo[] getAddedResources() { - return (SyncInfo[]) addedResources.toArray(new SyncInfo[addedResources.size()]); + return (SyncInfo[]) addedResources.values().toArray(new SyncInfo[addedResources.size()]); } public SyncInfo[] getChangedResources() { - return (SyncInfo[]) changedResources.toArray(new SyncInfo[changedResources.size()]); + return (SyncInfo[]) changedResources.values().toArray(new SyncInfo[changedResources.size()]); } public IResource[] getRemovedResources() { |