Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Valenta2004-03-16 21:39:26 +0000
committerMichael Valenta2004-03-16 21:39:26 +0000
commit63c9651818d0eef3f93c244842be514a11986aaf (patch)
tree77993dc5e0cc4915d9ec40aa83d76ec64ece8d10 /bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/subscribers/SyncSetChangedEvent.java
parent2925d223326c053676ec480def18c44c6abe7d10 (diff)
downloadeclipse.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.java26
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() {

Back to the top