mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[vcs-log] remove duplication between external and main log dispose
This commit is contained in:
@@ -167,9 +167,17 @@ public class VcsLogManager implements Disposable {
|
||||
return logProviders;
|
||||
}
|
||||
|
||||
public void disposeUi() {
|
||||
public void dispose(@Nullable Runnable callback) {
|
||||
LOG.assertTrue(ApplicationManager.getApplication().isDispatchThread());
|
||||
|
||||
myTabsLogRefresher.closeLogTabs();
|
||||
Disposer.dispose(myTabsLogRefresher);
|
||||
ApplicationManager.getApplication().executeOnPooledThread(() -> {
|
||||
Disposer.dispose(this);
|
||||
if (callback != null) {
|
||||
callback.run();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -24,7 +24,6 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.startup.StartupActivity;
|
||||
import com.intellij.openapi.ui.MessageType;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.vcs.ProjectLevelVcsManager;
|
||||
import com.intellij.openapi.vcs.VcsRoot;
|
||||
import com.intellij.openapi.vcs.ui.VcsBalloonProblemNotifier;
|
||||
@@ -178,14 +177,7 @@ public class VcsProjectLog implements Disposable {
|
||||
public synchronized void drop(@Nullable Runnable callback) {
|
||||
if (myValue != null) {
|
||||
myMessageBus.syncPublisher(VCS_PROJECT_LOG_CHANGED).logDisposed(myValue);
|
||||
myValue.disposeUi();
|
||||
VcsLogManager value = myValue;
|
||||
ApplicationManager.getApplication().executeOnPooledThread(() -> {
|
||||
Disposer.dispose(value);
|
||||
if (callback != null) {
|
||||
callback.run();
|
||||
}
|
||||
});
|
||||
myValue.dispose(callback);
|
||||
}
|
||||
myValue = null;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,6 @@ package git4idea.log;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.components.ServiceManager;
|
||||
import com.intellij.openapi.fileChooser.FileChooser;
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
|
||||
@@ -123,17 +122,14 @@ public class GitShowExternalLogAction extends DumbAwareAction {
|
||||
}
|
||||
VcsLogManager manager = new VcsLogManager(project, ServiceManager.getService(project, VcsLogTabsProperties.class),
|
||||
ContainerUtil.map(roots, root -> new VcsRoot(vcs, root)));
|
||||
AbstractVcsLogUi ui = manager.createLogUi(calcLogId(roots), tabName);
|
||||
return new MyContentComponent(new VcsLogPanel(manager, ui), roots, () -> {
|
||||
Disposer.dispose(ui);
|
||||
manager.disposeUi();
|
||||
ApplicationManager.getApplication().executeOnPooledThread(() -> {
|
||||
Disposer.dispose(manager);
|
||||
for (VirtualFile root : roots) {
|
||||
repositoryManager.removeExternalRepository(root);
|
||||
}
|
||||
});
|
||||
Disposable disposable = () -> manager.dispose(() -> {
|
||||
for (VirtualFile root : roots) {
|
||||
repositoryManager.removeExternalRepository(root);
|
||||
}
|
||||
});
|
||||
AbstractVcsLogUi ui = manager.createLogUi(calcLogId(roots), tabName);
|
||||
Disposer.register(disposable, ui);
|
||||
return new MyContentComponent(new VcsLogPanel(manager, ui), roots, disposable);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
Reference in New Issue
Block a user