private ChangeListsIndexes myIdx;
private final ChangesDelta myDelta;
+ private final List<String> myListsToDisappear;
public ChangeListWorker(final Project project, final PlusMinus<Pair<String, AbstractVcs>> deltaListener) {
myProject = project;
mySwitchedHolder = new SwitchedFileHolder(project, FileHolder.HolderType.SWITCHED);
myDelta = new ChangesDelta(project, deltaListener);
+ myListsToDisappear = new LinkedList<String>();
}
private ChangeListWorker(final ChangeListWorker worker) {
myLocallyDeleted = worker.myLocallyDeleted.copy();
mySwitchedHolder = (SwitchedFileHolder) worker.mySwitchedHolder.copy();
myDelta = worker.myDelta;
+ myListsToDisappear = new LinkedList<String>(worker.myListsToDisappear);
LocalChangeList defaultList = null;
for (LocalChangeList changeList : worker.myMap.values()) {
myMap.clear();
myMap.putAll(worker.myMap);
myDefault = worker.myDefault;
+
+ myListsToDisappear.clear();
+ myListsToDisappear.addAll(worker.myListsToDisappear);
myDelta.step(myIdx, worker.myIdx);
myIdx = new ChangeListsIndexes(worker.myIdx);
dispatcher.changeListChanged(changeList);
}
mySwitchedHolder.calculateChildren();
+
+ for (String name : myListsToDisappear) {
+ final LocalChangeList changeList = myMap.get(name);
+ if (changeList.getChanges().isEmpty()) {
+ removeChangeList(name);
+ }
+ }
+ myListsToDisappear.clear();
}
public List<LocalChangeList> getListsCopy() {
return changes;
}
+ void setListsToDisappear(final Collection<String> names) {
+ myListsToDisappear.addAll(names);
+ }
+
ChangeListManagerGate createSelfGate() {
return new MyGate(this);
}
myWorker.moveChangesTo(toList, changes.toArray(new Change[changes.size()]));
}
- public void deleteIfEmpty(String name) {
- final LocalChangeList list = myWorker.getCopyByName(name);
- if ((list != null) && (list.getChanges().isEmpty()) && (! list.isDefault())) {
- myWorker.removeChangeList(name);
- }
+ public void setListsToDisappear(final Collection<String> names) {
+ myWorker.setListsToDisappear(names);
}
}
}