Java源码示例:com.intellij.openapi.editor.event.EditorFactoryEvent
示例1
@Override
public void editorReleased(@Nonnull EditorFactoryEvent event) {
final Editor editor = event.getEditor();
if (editor.getProject() != myProject) return;
try {
final SrcFileAnnotator fileAnnotator;
synchronized (ANNOTATORS_LOCK) {
fileAnnotator = myAnnotators.remove(editor);
}
if (fileAnnotator != null) {
Disposer.dispose(fileAnnotator);
}
}
finally {
final Runnable request = myCurrentEditors.remove(editor);
if (request != null) {
myAlarm.cancelRequest(request);
}
}
}
示例2
public static void disposeWithEditor(@Nonnull Editor editor, @Nonnull Disposable disposable) {
ApplicationManager.getApplication().assertIsDispatchThread();
if (Disposer.isDisposed(disposable)) return;
if (editor.isDisposed()) {
Disposer.dispose(disposable);
return;
}
// for injected editors disposal will happen only when host editor is disposed,
// but this seems to be the best we can do (there are no notifications on disposal of injected editor)
Editor hostEditor = editor instanceof EditorWindow ? ((EditorWindow)editor).getDelegate() : editor;
EditorFactory.getInstance().addEditorFactoryListener(new EditorFactoryAdapter() {
@Override
public void editorReleased(@Nonnull EditorFactoryEvent event) {
if (event.getEditor() == hostEditor) {
Disposer.dispose(disposable);
}
}
}, disposable);
}
示例3
private Editor createEditor(@Nonnull Document document, boolean isViewer, Project project, @Nonnull EditorKind kind) {
Document hostDocument = document instanceof DocumentWindow ? ((DocumentWindow)document).getDelegate() : document;
DesktopEditorImpl editor = new DesktopEditorImpl(hostDocument, isViewer, project, kind);
myEditors.add(editor);
myEditorEventMulticaster.registerEditor(editor);
EditorFactoryEvent event = new EditorFactoryEvent(this, editor);
myEditorFactoryEventDispatcher.getMulticaster().editorCreated(event);
EP.forEachExtensionSafe(it -> it.editorCreated(event));
if (LOG.isDebugEnabled()) {
LOG.debug("number of Editors after create: " + myEditors.size());
}
return editor;
}
示例4
@Override
public void releaseEditor(@Nonnull Editor editor) {
try {
EditorFactoryEvent event = new EditorFactoryEvent(this, editor);
myEditorFactoryEventDispatcher.getMulticaster().editorReleased(event);
EP.forEachExtensionSafe(it -> it.editorReleased(event));
}
finally {
try {
((DesktopEditorImpl)editor).release();
}
finally {
myEditors.remove(editor);
if (LOG.isDebugEnabled()) {
LOG.debug("number of Editors after release: " + myEditors.size());
}
}
}
}
示例5
/**
* Invoked when the editor is created, and establish the relationship
* between the {@link Editor} editor and {@link HighlightEditorComponent} component.
*
* @param editorFactoryEvent editor factory event.
*/
@Override
public void editorCreated(@NotNull EditorFactoryEvent editorFactoryEvent) {
Editor editor = editorFactoryEvent.getEditor();
if (editor.getProject() == null) {
return;
}
HighlightEditorComponent highlightEditorComponent =
new HighlightEditorComponent(editor);
editorHighlightEditorComponentMap.put(editor, highlightEditorComponent);
}
示例6
/**
* Invoked when the editor is released, and dissolve the relationship
* between the {@link Editor} editor and {@link HighlightEditorComponent} component,
* and dispose the component.
*
* @param editorFactoryEvent
*/
@Override
public void editorReleased(@NotNull EditorFactoryEvent editorFactoryEvent) {
HighlightEditorComponent editorComponent =
editorHighlightEditorComponentMap.remove(editorFactoryEvent.getEditor());
if (editorComponent == null) {
return;
}
editorComponent.dispose();
}
示例7
@Override
public void editorCreated(@NotNull EditorFactoryEvent event) {
Project project = event.getEditor().getProject();
if (project != null) {
getInstance(project);
}
}
示例8
@Override
public void editorReleased(@NotNull EditorFactoryEvent event) {
Project project = event.getEditor().getProject();
if (project != null) {
getInstance(project);
}
}
示例9
public EncodingManagerImpl() {
ApplicationManager.getApplication().getMessageBus().connect().subscribe(AppLifecycleListener.TOPIC, new AppLifecycleListener() {
@Override
public void appClosing() {
// should call before dispose in write action
// prevent any further re-detection and wait for the queue to clear
myDisposed.set(true);
clearDocumentQueue();
}
});
EditorFactory editorFactory = EditorFactory.getInstance();
editorFactory.getEventMulticaster().addDocumentListener(new DocumentListener() {
@Override
public void documentChanged(@Nonnull DocumentEvent e) {
Document document = e.getDocument();
if (isEditorOpenedFor(document)) {
queueUpdateEncodingFromContent(document);
}
}
}, this);
editorFactory.addEditorFactoryListener(new EditorFactoryListener() {
@Override
public void editorCreated(@Nonnull EditorFactoryEvent event) {
queueUpdateEncodingFromContent(event.getEditor().getDocument());
}
}, this);
}
示例10
@Override
public void editorCreated(@Nonnull EditorFactoryEvent event) {
// note that in case of lazy loading of configurables, this event can happen
// outside of EDT, so the EDT check mustn't be done here
Editor editor = event.getEditor();
if (editor.getProject() != null && editor.getProject() != myProject) return;
final Document document = editor.getDocument();
final VirtualFile virtualFile = FileDocumentManager.getInstance().getFile(document);
if (virtualFile == null) return;
if (shouldBeInstalled(virtualFile)) {
installTracker(virtualFile, document);
}
}
示例11
@Override
public void editorReleased(@Nonnull EditorFactoryEvent event) {
final Editor editor = event.getEditor();
if (editor.getProject() != null && editor.getProject() != myProject) return;
final Document doc = editor.getDocument();
final Editor[] editors = event.getFactory().getEditors(doc, myProject);
if (editors.length == 0 || (editors.length == 1 && editor == editors[0])) {
releaseTracker(doc);
}
}
示例12
@Override
public void editorCreated(@Nonnull EditorFactoryEvent event) {
Project project = event.getEditor().getProject();
if (project != null) {
getInstance(project).editorCreated(event);
}
}
示例13
@Override
public void editorReleased(@Nonnull EditorFactoryEvent event) {
Project project = event.getEditor().getProject();
if (project != null) {
getInstance(project).editorReleased(event);
}
}
示例14
@Override
public void editorReleased(@Nonnull EditorFactoryEvent event) {
Editor editor = event.getEditor();
Project project = editor.getProject();
if (project == null || project.isDisposed() || !project.isOpen()) {
return;
}
TemplateState state = getTemplateState(editor);
if (state != null) {
state.gotoEnd();
}
clearTemplateState(editor);
}
示例15
public void editorReleased(@NotNull EditorFactoryEvent editorFactoryEvent) {
IntellijLanguageClient.editorClosed(editorFactoryEvent.getEditor());
}
示例16
public void editorCreated(@NotNull EditorFactoryEvent editorFactoryEvent) {
IntellijLanguageClient.editorOpened(editorFactoryEvent.getEditor());
}
示例17
@Override
public void editorCreated(@NotNull EditorFactoryEvent event) {
final Editor editor = event.getEditor();
particleContainers.put(editor, new ParticleContainer(editor));
}
示例18
@Override
public void editorReleased(@NotNull EditorFactoryEvent event) {
particleContainers.remove(event.getEditor());
}
示例19
@Override
public void editorCreated(EditorFactoryEvent event) {
editor = event.getEditor();
editorComponent = editor.getContentComponent();
refreshBackgroundImageBorder();
}
示例20
@Override
public void editorReleased(EditorFactoryEvent event) {
event.getEditor().getContentComponent().setBorder(null);
}
示例21
@Override
public void editorCreated(@Nonnull EditorFactoryEvent event) {
synchronized (myLock) {
if (myIsProjectClosing) return;
}
final Editor editor = event.getEditor();
if (editor.getProject() != myProject) return;
final PsiFile psiFile = ApplicationManager.getApplication().runReadAction(new Computable<PsiFile>() {
@Nullable
@Override
public PsiFile compute() {
if (myProject.isDisposed()) return null;
final PsiDocumentManager documentManager = PsiDocumentManager.getInstance(myProject);
final Document document = editor.getDocument();
return documentManager.getPsiFile(document);
}
});
if (psiFile != null && myCurrentSuitesBundle != null && psiFile.isPhysical()) {
final CoverageEngine engine = myCurrentSuitesBundle.getCoverageEngine();
if (!engine.coverageEditorHighlightingApplicableTo(psiFile)) {
return;
}
SrcFileAnnotator annotator = getAnnotator(editor);
if (annotator == null) {
annotator = new SrcFileAnnotator(psiFile, editor);
}
final SrcFileAnnotator finalAnnotator = annotator;
synchronized (ANNOTATORS_LOCK) {
myAnnotators.put(editor, finalAnnotator);
}
final Runnable request = new Runnable() {
@Override
public void run() {
if (myProject.isDisposed()) return;
if (myCurrentSuitesBundle != null) {
if (engine.acceptedByFilters(psiFile, myCurrentSuitesBundle)) {
finalAnnotator.showCoverageInformation(myCurrentSuitesBundle);
}
}
}
};
myCurrentEditors.put(editor, request);
myAlarm.addRequest(request, 100);
}
}
示例22
private void editorReleased(@Nonnull EditorFactoryEvent event) {
final Editor editor = event.getEditor();
if (editor.getProject() != null && editor.getProject() != myProject) return;
unregisterEditor(editor);
executeOnRelease(editor);
}