reduce usages of addProjectManagerListener(project)

This commit is contained in:
Vladimir Krivosheev
2017-05-15 14:36:44 +02:00
parent cb16f07461
commit 667459f3d4
@@ -20,10 +20,9 @@
package com.intellij.util.indexing;
import com.intellij.ide.IdeBundle;
import com.intellij.ide.startup.StartupManagerEx;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.TransactionGuard;
import com.intellij.openapi.components.AbstractProjectComponent;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.project.*;
@@ -38,22 +37,18 @@ import org.jetbrains.annotations.Nullable;
import java.util.Collection;
public class FileBasedIndexProjectHandler extends AbstractProjectComponent implements IndexableFileSet {
public class FileBasedIndexProjectHandler implements IndexableFileSet, Disposable {
private static final Logger LOG = Logger.getInstance("#com.intellij.util.indexing.FileBasedIndexProjectHandler");
private final FileBasedIndex myIndex;
private FileBasedIndexScanRunnableCollector myCollector;
public FileBasedIndexProjectHandler(FileBasedIndex index,
Project project,
FileBasedIndexScanRunnableCollector collector,
ProjectManager projectManager) {
super(project);
public FileBasedIndexProjectHandler(@NotNull Project project, FileBasedIndex index, FileBasedIndexScanRunnableCollector collector) {
myIndex = index;
myCollector = collector;
if (ApplicationManager.getApplication().isInternal()) {
project.getMessageBus().connect().subscribe(DumbService.DUMB_MODE, new DumbService.DumbModeListener() {
project.getMessageBus().connect(this).subscribe(DumbService.DUMB_MODE, new DumbService.DumbModeListener() {
@Override
public void enteredDumbMode() { }
@@ -64,7 +59,7 @@ public class FileBasedIndexProjectHandler extends AbstractProjectComponent imple
});
}
final StartupManagerEx startupManager = (StartupManagerEx)StartupManager.getInstance(project);
StartupManager startupManager = StartupManager.getInstance(project);
if (startupManager != null) {
startupManager.registerPreStartupActivity(() -> {
PushedFilePropertiesUpdater.getInstance(project).initializeProperties();
@@ -77,11 +72,12 @@ public class FileBasedIndexProjectHandler extends AbstractProjectComponent imple
});
myIndex.registerIndexableSet(this, project);
projectManager.addProjectManagerListener(project, new ProjectManagerListener() {
project.getMessageBus().connect(this).subscribe(ProjectManager.TOPIC, new ProjectManagerListener() {
private boolean removed;
@Override
public void projectClosing(Project project1) {
if (!removed) {
public void projectClosing(Project eventProject) {
if (eventProject == project && !removed) {
removed = true;
myIndex.removeIndexableSet(FileBasedIndexProjectHandler.this);
}
@@ -111,7 +107,7 @@ public class FileBasedIndexProjectHandler extends AbstractProjectComponent imple
}
@Override
public void disposeComponent() {
public void dispose() {
// done mostly for tests. In real life this is no-op, because the set was removed on project closing
myIndex.removeIndexableSet(this);
}