mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
StartupActivity: dispose resources on project or extension disposal
GitOrigin-RevId: a3eb464e443fa97fd06503b62f13e71504835077
This commit is contained in:
committed by
intellij-monorepo-bot
parent
c3e494e7a6
commit
81ecffeeec
+24
-16
@@ -2,17 +2,20 @@
|
||||
|
||||
package com.intellij.codeInsight.highlighting;
|
||||
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.EditorFactory;
|
||||
import com.intellij.openapi.editor.SelectionModel;
|
||||
import com.intellij.openapi.editor.event.*;
|
||||
import com.intellij.openapi.extensions.ExtensionPointUtil;
|
||||
import com.intellij.openapi.fileEditor.FileEditor;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManagerEvent;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManagerListener;
|
||||
import com.intellij.openapi.fileEditor.TextEditor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.startup.StartupActivity;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.util.Alarm;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -25,6 +28,10 @@ public class BraceHighlighter implements StartupActivity.DumbAware {
|
||||
@Override
|
||||
public void runActivity(@NotNull final Project project) {
|
||||
if (ApplicationManager.getApplication().isHeadlessEnvironment()) return; // sorry, upsource
|
||||
|
||||
Disposable activityDisposable = ExtensionPointUtil.createExtensionDisposable(this, StartupActivity.POST_STARTUP_ACTIVITY);
|
||||
Disposer.register(project, activityDisposable);
|
||||
|
||||
final EditorEventMulticaster eventMulticaster = EditorFactory.getInstance().getEventMulticaster();
|
||||
|
||||
eventMulticaster.addCaretListener(new CaretListener() {
|
||||
@@ -40,7 +47,7 @@ public class BraceHighlighter implements StartupActivity.DumbAware {
|
||||
}
|
||||
updateBraces(editor, myAlarm);
|
||||
}
|
||||
}, project);
|
||||
}, activityDisposable);
|
||||
|
||||
final SelectionListener selectionListener = new SelectionListener() {
|
||||
@Override
|
||||
@@ -60,7 +67,7 @@ public class BraceHighlighter implements StartupActivity.DumbAware {
|
||||
updateBraces(editor, myAlarm);
|
||||
}
|
||||
};
|
||||
eventMulticaster.addSelectionListener(selectionListener, project);
|
||||
eventMulticaster.addSelectionListener(selectionListener, activityDisposable);
|
||||
|
||||
DocumentListener documentListener = new DocumentListener() {
|
||||
@Override
|
||||
@@ -72,22 +79,23 @@ public class BraceHighlighter implements StartupActivity.DumbAware {
|
||||
}
|
||||
}
|
||||
};
|
||||
eventMulticaster.addDocumentListener(documentListener, project);
|
||||
eventMulticaster.addDocumentListener(documentListener, activityDisposable);
|
||||
|
||||
project.getMessageBus().connect().subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerListener() {
|
||||
@Override
|
||||
public void selectionChanged(@NotNull FileEditorManagerEvent e) {
|
||||
myAlarm.cancelAllRequests();
|
||||
FileEditor oldEditor = e.getOldEditor();
|
||||
if (oldEditor instanceof TextEditor) {
|
||||
clearBraces(((TextEditor)oldEditor).getEditor());
|
||||
project.getMessageBus().connect(activityDisposable)
|
||||
.subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerListener() {
|
||||
@Override
|
||||
public void selectionChanged(@NotNull FileEditorManagerEvent e) {
|
||||
myAlarm.cancelAllRequests();
|
||||
FileEditor oldEditor = e.getOldEditor();
|
||||
if (oldEditor instanceof TextEditor) {
|
||||
clearBraces(((TextEditor)oldEditor).getEditor());
|
||||
}
|
||||
FileEditor newEditor = e.getNewEditor();
|
||||
if (newEditor instanceof TextEditor) {
|
||||
updateBraces(((TextEditor)newEditor).getEditor(), myAlarm);
|
||||
}
|
||||
}
|
||||
FileEditor newEditor = e.getNewEditor();
|
||||
if (newEditor instanceof TextEditor) {
|
||||
updateBraces(((TextEditor)newEditor).getEditor(), myAlarm);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
static void updateBraces(@NotNull final Editor editor, @NotNull final Alarm alarm) {
|
||||
|
||||
+9
-3
@@ -1,11 +1,14 @@
|
||||
package com.intellij.tasks.context;
|
||||
|
||||
import com.intellij.notification.*;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.application.TransactionGuard;
|
||||
import com.intellij.openapi.extensions.ExtensionPointUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.startup.StartupActivity;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.vcs.BranchChangeListener;
|
||||
import com.intellij.openapi.vcs.VcsConfiguration;
|
||||
import com.intellij.tasks.BranchInfo;
|
||||
@@ -24,10 +27,11 @@ public class BranchContextTracker implements BranchChangeListener {
|
||||
private final Project myProject;
|
||||
private String myLastBranch;
|
||||
|
||||
private BranchContextTracker(Project project) {
|
||||
private BranchContextTracker(@NotNull Project project, @NotNull Disposable activityDisposable) {
|
||||
myProject = project;
|
||||
myContextManager = WorkingContextManager.getInstance(project);
|
||||
project.getMessageBus().connect().subscribe(BranchChangeListener.VCS_BRANCH_CHANGED, this);
|
||||
project.getMessageBus().connect(activityDisposable)
|
||||
.subscribe(BranchChangeListener.VCS_BRANCH_CHANGED, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -93,7 +97,9 @@ public class BranchContextTracker implements BranchChangeListener {
|
||||
|
||||
@Override
|
||||
public void runActivity(@NotNull Project project) {
|
||||
new BranchContextTracker(project);
|
||||
Disposable activityDisposable = ExtensionPointUtil.createExtensionDisposable(this, StartupActivity.POST_STARTUP_ACTIVITY);
|
||||
Disposer.register(project, activityDisposable);
|
||||
new BranchContextTracker(project, activityDisposable);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,8 +3,10 @@ package com.intellij.lang.ant.config.impl;
|
||||
|
||||
import com.intellij.lang.ant.config.AntConfiguration;
|
||||
import com.intellij.lang.ant.config.actions.TargetActionStub;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.ActionManager;
|
||||
import com.intellij.openapi.actionSystem.ex.ActionManagerEx;
|
||||
import com.intellij.openapi.extensions.ExtensionPointUtil;
|
||||
import com.intellij.openapi.keymap.Keymap;
|
||||
import com.intellij.openapi.keymap.ex.KeymapManagerEx;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -15,6 +17,9 @@ import org.jetbrains.annotations.NotNull;
|
||||
public class AntShortcutStartupActivity implements StartupActivity {
|
||||
@Override
|
||||
public void runActivity(@NotNull Project project) {
|
||||
Disposable activityDisposable = ExtensionPointUtil.createExtensionDisposable(this, StartupActivity.POST_STARTUP_ACTIVITY);
|
||||
Disposer.register(project, activityDisposable);
|
||||
|
||||
final String prefix = AntConfiguration.getActionIdPrefix(project);
|
||||
final ActionManager actionManager = ActionManager.getInstance();
|
||||
|
||||
@@ -26,7 +31,7 @@ public class AntShortcutStartupActivity implements StartupActivity {
|
||||
}
|
||||
}
|
||||
|
||||
Disposer.register(project, () -> unregisterAction(project));
|
||||
Disposer.register(activityDisposable, () -> unregisterAction(project));
|
||||
}
|
||||
|
||||
private static void unregisterAction(@NotNull Project project) {
|
||||
|
||||
Reference in New Issue
Block a user