From 39fb6e261167b820742847ab44b7b0b75aaa61c9 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 23 Oct 2009 18:32:58 +0400 Subject: [PATCH] P4 local changes refactoring. (2) --- .../vcs/changes/ChangeListManagerGate.java | 2 +- .../openapi/vcs/changes/ChangeListWorker.java | 25 +++++++++++++++---- .../openapi/vcs/changes/local/AddList.java | 6 ++++- .../pending/MockChangeListManagerGate.java | 6 +---- 4 files changed, 27 insertions(+), 12 deletions(-) diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/changes/ChangeListManagerGate.java b/platform/vcs-api/src/com/intellij/openapi/vcs/changes/ChangeListManagerGate.java index 05e7e7ee94b7..7a57e0206b18 100644 --- a/platform/vcs-api/src/com/intellij/openapi/vcs/changes/ChangeListManagerGate.java +++ b/platform/vcs-api/src/com/intellij/openapi/vcs/changes/ChangeListManagerGate.java @@ -36,5 +36,5 @@ public interface ChangeListManagerGate { void editName(final String oldName, final String newName); // must be allowed only for perforce change synchronizer, not during normal update void moveChanges(final String toList, final Collection changes); - void deleteIfEmpty(final String name); + void setListsToDisappear(final Collection names); } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListWorker.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListWorker.java index a012c477b306..73397442fa3e 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListWorker.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListWorker.java @@ -47,6 +47,7 @@ public class ChangeListWorker implements ChangeListsWriteOperations { private ChangeListsIndexes myIdx; private final ChangesDelta myDelta; + private final List myListsToDisappear; public ChangeListWorker(final Project project, final PlusMinus> deltaListener) { myProject = project; @@ -56,6 +57,7 @@ public class ChangeListWorker implements ChangeListsWriteOperations { mySwitchedHolder = new SwitchedFileHolder(project, FileHolder.HolderType.SWITCHED); myDelta = new ChangesDelta(project, deltaListener); + myListsToDisappear = new LinkedList(); } private ChangeListWorker(final ChangeListWorker worker) { @@ -65,6 +67,7 @@ public class ChangeListWorker implements ChangeListsWriteOperations { myLocallyDeleted = worker.myLocallyDeleted.copy(); mySwitchedHolder = (SwitchedFileHolder) worker.mySwitchedHolder.copy(); myDelta = worker.myDelta; + myListsToDisappear = new LinkedList(worker.myListsToDisappear); LocalChangeList defaultList = null; for (LocalChangeList changeList : worker.myMap.values()) { @@ -97,6 +100,9 @@ public class ChangeListWorker implements ChangeListsWriteOperations { 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); @@ -362,6 +368,14 @@ public class ChangeListWorker implements ChangeListsWriteOperations { 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 getListsCopy() { @@ -637,6 +651,10 @@ public class ChangeListWorker implements ChangeListsWriteOperations { return changes; } + void setListsToDisappear(final Collection names) { + myListsToDisappear.addAll(names); + } + ChangeListManagerGate createSelfGate() { return new MyGate(this); } @@ -682,11 +700,8 @@ public class ChangeListWorker implements ChangeListsWriteOperations { 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 names) { + myWorker.setListsToDisappear(names); } } } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/local/AddList.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/local/AddList.java index 728616a8d165..81e03e949270 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/local/AddList.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/local/AddList.java @@ -31,7 +31,11 @@ public class AddList implements ChangeListCommand { } public void apply(final ChangeListWorker worker) { - myNewListCopy = worker.addChangeList(myName, myComment); + if (! worker.findListByName(myName)) { + myNewListCopy = worker.addChangeList(myName, myComment); + } else { + worker.editComment(myName, myComment); + } } public void doNotify(final EventDispatcher dispatcher) { diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/pending/MockChangeListManagerGate.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/pending/MockChangeListManagerGate.java index c552ddb54c66..43366b4fff16 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/pending/MockChangeListManagerGate.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/pending/MockChangeListManagerGate.java @@ -65,10 +65,6 @@ public class MockChangeListManagerGate implements ChangeListManagerGate { } } - public void deleteIfEmpty(String name) { - final LocalChangeList changeList = myManager.findChangeList(name); - if ((changeList != null) && (changeList.getChanges().isEmpty())) { - myManager.removeChangeList(name); - } + public void setListsToDisappear(Collection names) { } } -- 2.32.0