mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
navigation to class fixed if file not opened (IDEADEV-41617 re-fixed): added test for editor selection
This commit is contained in:
+13
-15
@@ -33,6 +33,7 @@ import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileManager;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.messages.MessageBusConnection;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -51,30 +52,21 @@ public final class EditorHistoryManager extends AbstractProjectComponent impleme
|
||||
/**
|
||||
* State corresponding to the most recent file is the last
|
||||
*/
|
||||
private final ArrayList<HistoryEntry> myEntriesList;
|
||||
private final ArrayList<HistoryEntry> myEntriesList = new ArrayList<HistoryEntry>();
|
||||
|
||||
/** Invoked by reflection */
|
||||
EditorHistoryManager(final Project project, FileEditorManager fileEditorManager, final UISettings uiSettings){
|
||||
EditorHistoryManager(final Project project, final UISettings uiSettings){
|
||||
super(project);
|
||||
myEntriesList = new ArrayList<HistoryEntry>();
|
||||
MyEditorManagerListener editorManagerListener = new MyEditorManagerListener();
|
||||
|
||||
/**
|
||||
* Updates history length
|
||||
*/
|
||||
final MyUISettingsListener myUISettingsListener = new MyUISettingsListener();
|
||||
|
||||
fileEditorManager.addFileEditorManagerListener(editorManagerListener, project);
|
||||
project.getMessageBus().connect().subscribe(FileEditorManagerListener.Before.FILE_EDITOR_MANAGER, new MyEditorManagerBeforeListener());
|
||||
|
||||
uiSettings.addUISettingsListener(myUISettingsListener, project);
|
||||
uiSettings.addUISettingsListener(new MyUISettingsListener(), project);
|
||||
}
|
||||
|
||||
public void projectOpened(){
|
||||
|
||||
connectToManager();
|
||||
StartupManager.getInstance(myProject).registerPostStartupActivity(
|
||||
new DumbAwareRunnable(){
|
||||
public void run(){
|
||||
// myElement may be null if node that correspondes to this manager does not exist
|
||||
// myElement may be null if node that corresponds to this manager does not exist
|
||||
if (myElement != null){
|
||||
final List children = myElement.getChildren(HistoryEntry.TAG);
|
||||
myElement = null;
|
||||
@@ -100,6 +92,12 @@ public final class EditorHistoryManager extends AbstractProjectComponent impleme
|
||||
);
|
||||
}
|
||||
|
||||
public void connectToManager() {
|
||||
MessageBusConnection connection = myProject.getMessageBus().connect();
|
||||
connection.subscribe(FileEditorManagerListener.Before.FILE_EDITOR_MANAGER, new MyEditorManagerBeforeListener());
|
||||
connection.subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new MyEditorManagerListener());
|
||||
}
|
||||
|
||||
|
||||
@NotNull
|
||||
public String getComponentName(){
|
||||
|
||||
+14
@@ -1,7 +1,9 @@
|
||||
package com.intellij.openapi.fileEditor;
|
||||
|
||||
import com.intellij.codeInsight.navigation.NavigationUtil;
|
||||
import com.intellij.openapi.components.impl.ComponentManagerImpl;
|
||||
import com.intellij.openapi.fileEditor.ex.IdeDocumentHistory;
|
||||
import com.intellij.openapi.fileEditor.impl.EditorHistoryManager;
|
||||
import com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl;
|
||||
import com.intellij.openapi.fileEditor.impl.IdeDocumentHistoryImpl;
|
||||
import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
@@ -35,6 +37,17 @@ public class NewDocumentHistoryTest extends PlatformLangTestCase {
|
||||
assertEquals("mockEditor", myManager.getSelectedEditor(file).getName());
|
||||
}
|
||||
|
||||
public void testSelectFileOnNavigation() throws Exception {
|
||||
VirtualFile file1 = getFile("/src/1.txt");
|
||||
myManager.openFile(file1, true);
|
||||
VirtualFile file2 = getFile("/src/2.txt");
|
||||
myManager.openFile(file2, true);
|
||||
NavigationUtil.activateFileWithPsiElement(getPsiManager().findFile(file1));
|
||||
VirtualFile[] files = myManager.getSelectedFiles();
|
||||
assertEquals(1, files.length);
|
||||
assertEquals("1.txt", files[0].getName());
|
||||
}
|
||||
|
||||
protected VirtualFile getFile(String path) {
|
||||
return LocalFileSystem.getInstance().refreshAndFindFileByPath(
|
||||
PlatformTestUtil.getCommunityPath().replace(File.separatorChar, '/') + "/platform/platform-tests/testData/fileEditorManager" + path);
|
||||
@@ -45,5 +58,6 @@ public class NewDocumentHistoryTest extends PlatformLangTestCase {
|
||||
myManager = new FileEditorManagerImpl(getProject(), DockManager.getInstance(getProject()));
|
||||
((ComponentManagerImpl)getProject()).registerComponentInstance(FileEditorManager.class, myManager);
|
||||
((IdeDocumentHistoryImpl)IdeDocumentHistory.getInstance(getProject())).projectOpened();
|
||||
EditorHistoryManager.getInstance(getProject()).connectToManager();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user