| package com.intellij.navigation; |
| |
| import com.intellij.codeInsight.navigation.NavigationUtil; |
| import com.intellij.openapi.editor.Editor; |
| import com.intellij.openapi.fileEditor.FileEditor; |
| import com.intellij.openapi.fileEditor.HeavyFileEditorManagerTestCase; |
| import com.intellij.openapi.fileEditor.TextEditor; |
| import com.intellij.openapi.vfs.VirtualFile; |
| import com.intellij.psi.PsiClass; |
| import com.intellij.psi.PsiJavaFile; |
| |
| /** |
| * @author Dmitry Avdeev |
| * Date: 4/25/13 |
| */ |
| public class GotoClassTest extends HeavyFileEditorManagerTestCase { |
| |
| public void testGotoClass() throws Exception { |
| |
| PsiJavaFile file = (PsiJavaFile)myFixture.configureByText("Foo.java", "public class Foo {\n" + |
| "}\n" + |
| "\n" + |
| "class Bar {}\n"); |
| |
| VirtualFile virtualFile = file.getVirtualFile(); |
| assertNotNull(virtualFile); |
| myManager.openFile(virtualFile, true); |
| assertEquals(0, getOffset(virtualFile)); |
| myManager.closeAllFiles(); |
| |
| PsiClass psiClass = file.getClasses()[1]; |
| int identifierOffset = psiClass.getNameIdentifier().getTextOffset(); |
| NavigationUtil.activateFileWithPsiElement(psiClass); |
| assertEquals(identifierOffset, getOffset(virtualFile)); |
| |
| getEditor(virtualFile).getCaretModel().moveToOffset(identifierOffset + 3); // it's still inside the class, so keep it |
| |
| myManager.closeAllFiles(); |
| NavigationUtil.activateFileWithPsiElement(psiClass); |
| assertEquals(identifierOffset + 3, getOffset(virtualFile)); |
| |
| getEditor(virtualFile).getCaretModel().moveToOffset(0); |
| NavigationUtil.activateFileWithPsiElement(psiClass); |
| assertEquals(identifierOffset, getOffset(virtualFile)); |
| |
| myManager.closeAllFiles(); |
| NavigationUtil.activateFileWithPsiElement(file); // GoTo file should keep offset |
| assertEquals(identifierOffset, getOffset(virtualFile)); |
| } |
| |
| private int getOffset(VirtualFile virtualFile) { |
| Editor editor = getEditor(virtualFile); |
| return editor.getCaretModel().getOffset(); |
| } |
| |
| private Editor getEditor(VirtualFile virtualFile) { |
| FileEditor[] editors = myManager.getEditors(virtualFile); |
| return ((TextEditor)editors[0]).getEditor(); |
| } |
| } |