From e1392ce79366157175e82270ddfa1a338042e54e Mon Sep 17 00:00:00 2001 From: Gregory Shrago Date: Mon, 13 Dec 2010 18:50:47 +0300 Subject: [PATCH] (halfway fix, kirillk!!) IDEA-62856 "Detachable editor tabs" doesn't work for Database console --- .../console/LanguageConsoleImpl.java | 64 +++++++++---------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java b/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java index f9ea07ac814e..d1ad2dd7b5df 100644 --- a/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java @@ -38,10 +38,7 @@ import com.intellij.openapi.editor.impl.DocumentImpl; import com.intellij.openapi.editor.impl.EditorFactoryImpl; import com.intellij.openapi.editor.impl.EditorImpl; import com.intellij.openapi.editor.markup.*; -import com.intellij.openapi.fileEditor.FileEditor; -import com.intellij.openapi.fileEditor.FileEditorManager; -import com.intellij.openapi.fileEditor.OpenFileDescriptor; -import com.intellij.openapi.fileEditor.TextEditor; +import com.intellij.openapi.fileEditor.*; import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx; import com.intellij.openapi.fileEditor.impl.EditorWindow; import com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl; @@ -490,40 +487,41 @@ public class LanguageConsoleImpl implements Disposable, TypeSafeDataProvider { } private void installEditorFactoryListener() { - final EditorFactoryListener factoryListener = new EditorFactoryListener() { - public void editorCreated(final EditorFactoryEvent event) { - final Editor editor = event.getEditor(); - if (editor.getDocument() == myEditorDocument) { - if (myConsoleEditor != null) { - // i.e. if console is initialized - queueUiUpdate(false); + myProject.getMessageBus().connect(this).subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerAdapter() { + @Override + public void fileOpened(FileEditorManager source, VirtualFile file) { + if (file != myFile.getVirtualFile()) return; + if (myConsoleEditor != null) { + queueUiUpdate(false); + for (FileEditor fileEditor : source.getAllEditors()) { + if (!(fileEditor instanceof TextEditor)) continue; + final Editor editor = ((TextEditor)fileEditor).getEditor(); registerActionShortcuts(editor.getComponent()); - } - editor.getCaretModel().addCaretListener(new CaretListener() { - public void caretPositionChanged(CaretEvent e) { - queueUiUpdate(false); - } - }); - editor.getContentComponent().addFocusListener(new FocusListener() { - public void focusGained(final FocusEvent e) { - myCurrentEditor = editor; - } + editor.getCaretModel().addCaretListener(new CaretListener() { + public void caretPositionChanged(CaretEvent e) { + queueUiUpdate(false); + } + }); + editor.getContentComponent().addFocusListener(new FocusListener() { + public void focusGained(final FocusEvent e) { + myCurrentEditor = editor; + } - public void focusLost(final FocusEvent e) { - } - }); - } - } - - public void editorReleased(final EditorFactoryEvent event) { - if (event.getEditor().getDocument() == myEditorDocument) { - if (myUiUpdateRunnable != null) { - ApplicationManager.getApplication().runReadAction(myUiUpdateRunnable); + public void focusLost(final FocusEvent e) { + } + }); } } } - }; - EditorFactory.getInstance().addEditorFactoryListener(factoryListener, this); + + @Override + public void fileClosed(FileEditorManager source, VirtualFile file) { + if (file != myFile.getVirtualFile()) return; + if (myUiUpdateRunnable != null) { + ApplicationManager.getApplication().runReadAction(myUiUpdateRunnable); + } + } + }); } protected void registerActionShortcuts(JComponent component) {