From e1e65c7a94ca8cbb2ee88817a41537e5f5d9f423 Mon Sep 17 00:00:00 2001 From: Alexander Lobas Date: Wed, 14 Nov 2012 21:16:43 +0400 Subject: [PATCH] Skip events during open file over back action --- .../AndroidSelectedFileEditorProvider.java | 44 ++++++++++++------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/plugins/android-designer/src/com/intellij/android/designer/AndroidSelectedFileEditorProvider.java b/plugins/android-designer/src/com/intellij/android/designer/AndroidSelectedFileEditorProvider.java index ad58731aae30..778bad95af85 100644 --- a/plugins/android-designer/src/com/intellij/android/designer/AndroidSelectedFileEditorProvider.java +++ b/plugins/android-designer/src/com/intellij/android/designer/AndroidSelectedFileEditorProvider.java @@ -23,6 +23,7 @@ import com.intellij.openapi.fileEditor.impl.EditorHistoryManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.startup.StartupManager; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.messages.MessageBusConnection; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -31,10 +32,13 @@ import org.jetbrains.annotations.Nullable; */ public class AndroidSelectedFileEditorProvider implements SelectedFileEditorProvider { private static final String KEY = "AndroidLayoutSelectedEditor"; + private static VirtualFile myCurrentOpenedFile; @Nullable @Override public FileEditorProvider getSelectedProvider(Project project, VirtualFile openedFile) { + myCurrentOpenedFile = null; + if (!AndroidDesignerEditorProvider.acceptLayout(project, openedFile)) { return null; } @@ -58,27 +62,33 @@ public class AndroidSelectedFileEditorProvider implements SelectedFileEditorProv public void projectOpened() { StartupManager.getInstance(myProject).registerPostStartupActivity(new Runnable() { public void run() { - myProject.getMessageBus().connect(myProject) - .subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerListener() { - @Override - public void fileOpened(FileEditorManager source, VirtualFile file) { - } + MessageBusConnection connection = myProject.getMessageBus().connect(myProject); + connection.subscribe(FileEditorManagerListener.Before.FILE_EDITOR_MANAGER, new FileEditorManagerListener.Before.Adapter() { + @Override + public void beforeFileOpened(FileEditorManager source, VirtualFile file) { + myCurrentOpenedFile = file; + } + }); + connection.subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerListener() { + @Override + public void fileOpened(FileEditorManager source, VirtualFile file) { + } - @Override - public void fileClosed(FileEditorManager source, VirtualFile file) { - } + @Override + public void fileClosed(FileEditorManager source, VirtualFile file) { + } - @Override - public void selectionChanged(FileEditorManagerEvent event) { - VirtualFile file = event.getNewFile(); - if (file != null && AndroidDesignerEditorProvider.acceptLayout(myProject, file)) { - FileEditorProvider provider = EditorHistoryManager.getInstance(myProject).getSelectedProvider(file); - if (provider != null) { - PropertiesComponent.getInstance(myProject).setValue(KEY, provider.getEditorTypeId()); - } + @Override + public void selectionChanged(FileEditorManagerEvent event) { + VirtualFile file = event.getNewFile(); + if (file != null && AndroidDesignerEditorProvider.acceptLayout(myProject, file)) { + FileEditorProvider provider = EditorHistoryManager.getInstance(myProject).getSelectedProvider(file); + if (provider != null && file != myCurrentOpenedFile) { + PropertiesComponent.getInstance(myProject).setValue(KEY, provider.getEditorTypeId()); } } - }); + } + }); } }); }