diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/ProjectLevelVcsManager.java b/platform/vcs-api/src/com/intellij/openapi/vcs/ProjectLevelVcsManager.java
index 032ea0be76a9..b679df2d3f96 100644
--- a/platform/vcs-api/src/com/intellij/openapi/vcs/ProjectLevelVcsManager.java
+++ b/platform/vcs-api/src/com/intellij/openapi/vcs/ProjectLevelVcsManager.java
@@ -198,6 +198,7 @@ public abstract class ProjectLevelVcsManager {
* @deprecated use {@link #VCS_CONFIGURATION_CHANGED} instead
* @since 6.0
*/
+ @Deprecated
public abstract void addVcsListener(VcsListener listener);
/**
@@ -207,6 +208,7 @@ public abstract class ProjectLevelVcsManager {
* @deprecated use {@link #VCS_CONFIGURATION_CHANGED} instead
* @since 6.0
*/
+ @Deprecated
public abstract void removeVcsListener(VcsListener listener);
/**
diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/VcsListener.java b/platform/vcs-api/src/com/intellij/openapi/vcs/VcsListener.java
index e8d3abbacb19..64fa6f38571d 100644
--- a/platform/vcs-api/src/com/intellij/openapi/vcs/VcsListener.java
+++ b/platform/vcs-api/src/com/intellij/openapi/vcs/VcsListener.java
@@ -25,9 +25,9 @@ package com.intellij.openapi.vcs;
import java.util.EventListener;
/**
- * Allows to receive notifications about changes in VCS configuration for the project.
+ *
Allows to receive notifications about changes in VCS configuration for the project.
+ * Use the {@link ProjectLevelVcsManager#VCS_CONFIGURATION_CHANGED} MessageBus topic to subscribe.
*
- * @see ProjectLevelVcsManager#addVcsListener
* @since 6.0
*/
public interface VcsListener extends EventListener {
diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListManagerImpl.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListManagerImpl.java
index 13c89e8f9a89..fda0d5762b9b 100644
--- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListManagerImpl.java
+++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListManagerImpl.java
@@ -63,6 +63,8 @@ import java.util.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicReference;
+import static com.intellij.openapi.vcs.ProjectLevelVcsManager.*;
+
@State(name = "ChangeListManager", storages = @Storage(StoragePathMacros.WORKSPACE_FILE))
public class ChangeListManagerImpl extends ChangeListManagerEx implements ProjectComponent, ChangeListOwner, PersistentStateComponent {
public static final Logger LOG = Logger.getInstance("#com.intellij.openapi.vcs.changes.ChangeListManagerImpl");
@@ -246,14 +248,14 @@ public class ChangeListManagerImpl extends ChangeListManagerEx implements Projec
final ProjectLevelVcsManager vcsManager = ProjectLevelVcsManager.getInstance(myProject);
if (ApplicationManager.getApplication().isUnitTestMode()) {
myUpdater.initialized();
- vcsManager.addVcsListener(myVcsListener);
+ myProject.getMessageBus().connect().subscribe(VCS_CONFIGURATION_CHANGED, myVcsListener);
}
else {
((ProjectLevelVcsManagerImpl)vcsManager).addInitializationRequest(
VcsInitObject.CHANGE_LIST_MANAGER, (DumbAwareRunnable)() -> {
myUpdater.initialized();
broadcastStateAfterLoad();
- vcsManager.addVcsListener(myVcsListener);
+ myProject.getMessageBus().connect().subscribe(VCS_CONFIGURATION_CHANGED, myVcsListener);
});
myConflictTracker.startTracking();
@@ -307,8 +309,6 @@ public class ChangeListManagerImpl extends ChangeListManagerEx implements Projec
@Override
public void projectClosed() {
- ProjectLevelVcsManager.getInstance(myProject).removeVcsListener(myVcsListener);
-
synchronized (myDataLock) {
myUpdateChangesProgressIndicator.cancel();
}
diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/CommittedChangesViewManager.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/CommittedChangesViewManager.java
index d33c9b63234b..e5880e6867fd 100644
--- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/CommittedChangesViewManager.java
+++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/CommittedChangesViewManager.java
@@ -87,8 +87,8 @@ public class CommittedChangesViewManager implements ChangesViewContentProvider {
}
public JComponent initContent() {
- myVcsManager.addVcsListener(myVcsListener);
myConnection = myBus.connect();
+ myConnection.subscribe(ProjectLevelVcsManager.VCS_CONFIGURATION_CHANGED, myVcsListener);
myConnection.subscribe(CommittedChangesCache.COMMITTED_TOPIC, new MyCommittedChangesListener());
updateChangesContent();
myComponent.refreshChanges(true);
@@ -96,7 +96,6 @@ public class CommittedChangesViewManager implements ChangesViewContentProvider {
}
public void disposeContent() {
- myVcsManager.removeVcsListener(myVcsListener);
myConnection.disconnect();
Disposer.dispose(myComponent);
myComponent = null;
diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/history/MergeInfoUpdatesListener.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/history/MergeInfoUpdatesListener.java
index 5f05a263adcf..36fc1206b7bd 100644
--- a/plugins/svn4idea/src/org/jetbrains/idea/svn/history/MergeInfoUpdatesListener.java
+++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/history/MergeInfoUpdatesListener.java
@@ -18,7 +18,6 @@ package org.jetbrains.idea.svn.history;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.ZipperUpdater;
-import com.intellij.openapi.vcs.ProjectLevelVcsManager;
import com.intellij.openapi.vcs.VcsListener;
import com.intellij.openapi.vcs.changes.committed.CommittedChangesTreeBrowser;
import com.intellij.openapi.vcs.changes.committed.VcsConfigurationChangeListener;
@@ -34,6 +33,8 @@ import org.jetbrains.idea.svn.mergeinfo.SvnMergeInfoCache;
import java.util.ArrayList;
import java.util.List;
+import static com.intellij.openapi.vcs.ProjectLevelVcsManager.VCS_CONFIGURATION_CHANGED;
+
public class MergeInfoUpdatesListener {
private final static int DELAY = 300;
@@ -77,7 +78,7 @@ public class MergeInfoUpdatesListener {
myConnection.subscribe(SvnVcs.ROOTS_RELOADED, reloadConsumer);
- ProjectLevelVcsManager.getInstance(myProject).addVcsListener(new VcsListener() {
+ myConnection.subscribe(VCS_CONFIGURATION_CHANGED, new VcsListener() {
public void directoryMappingChanged() {
callReloadMergeInfo();
}