Merge branch 'master' of git@git.labs.intellij.net:idea/community

This commit is contained in:
nik
2009-11-26 12:44:20 +03:00
4 changed files with 36 additions and 2 deletions
@@ -37,4 +37,21 @@ public interface FileEditorManagerListener extends EventListener{
* TODO[vova] write javadoc
*/
void selectionChanged(FileEditorManagerEvent event);
interface Before extends EventListener {
Topic<Before> FILE_EDITOR_MANAGER = new Topic<Before>("file editor before events", Before.class);
void beforeFileOpened(FileEditorManager source, VirtualFile file);
void beforeFileClosed(FileEditorManager source, VirtualFile file);
public static class Adapter implements Before {
public void beforeFileOpened(FileEditorManager source, VirtualFile file) {
}
public void beforeFileClosed(FileEditorManager source, VirtualFile file) {
}
}
}
}
@@ -65,6 +65,8 @@ public final class EditorHistoryManager extends AbstractProjectComponent impleme
final MyUISettingsListener myUISettingsListener = new MyUISettingsListener();
fileEditorManager.addFileEditorManagerListener(editorManagerListener, project);
project.getMessageBus().connect().subscribe(FileEditorManagerListener.Before.FILE_EDITOR_MANAGER, new MyEditorManagerBeforeListener());
uiSettings.addUISettingsListener(myUISettingsListener);
Disposer.register(project, new Disposable() {
public void dispose() {
@@ -314,6 +316,13 @@ public final class EditorHistoryManager extends AbstractProjectComponent impleme
}
}
private final class MyEditorManagerBeforeListener extends FileEditorManagerListener.Before.Adapter {
@Override
public void beforeFileClosed(FileEditorManager source, VirtualFile file) {
updateHistoryEntry(file, false);
}
}
/**
* Cuts/extends history length
*/
@@ -131,6 +131,11 @@ public class EditorWindow {
if (editors.isEmpty()) return;
final EditorWithProviderComposite editor = findFileComposite(file);
final FileEditorManagerListener.Before beforePublisher =
editorManager.getProject().getMessageBus().syncPublisher(FileEditorManagerListener.Before.FILE_EDITOR_MANAGER);
beforePublisher.beforeFileClosed(editorManager, file);
if (myTabbedPane != null) {
final int componentIndex = findComponentIndex(editor.getComponent());
if (componentIndex >= 0) { // editor could close itself on decomposition
@@ -157,9 +162,10 @@ public class EditorWindow {
}
}
finally {
final FileEditorManagerListener publisher =
final FileEditorManagerListener afterPublisher =
editorManager.getProject().getMessageBus().syncPublisher(FileEditorManagerListener.FILE_EDITOR_MANAGER);
publisher.fileClosed(editorManager, file);
afterPublisher.fileClosed(editorManager, file);
}
}
});
@@ -491,6 +491,8 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
}
newEditorCreated = true;
getProject().getMessageBus().syncPublisher(FileEditorManagerListener.Before.FILE_EDITOR_MANAGER).beforeFileOpened(this, file);
editors = new FileEditor[providers.length];
for (int i = 0; i < providers.length; i++) {
try {