Example usage for com.intellij.openapi.fileEditor OpenFileDescriptor OpenFileDescriptor

List of usage examples for com.intellij.openapi.fileEditor OpenFileDescriptor OpenFileDescriptor

Introduction

In this page you can find the example usage for com.intellij.openapi.fileEditor OpenFileDescriptor OpenFileDescriptor.

Prototype

public OpenFileDescriptor(@NotNull Project project, @NotNull VirtualFile file) 

Source Link

Usage

From source file:com.intellij.ide.actions.SearchEverywhereAction.java

License:Apache License

private void doNavigate(final int index) {
    final Project project = CommonDataKeys.PROJECT
            .getData(DataManager.getInstance().getDataContext(getField().getTextEditor()));
    final Executor executor = ourShiftIsPressed.get() ? DefaultRunExecutor.getRunExecutorInstance()
            : ExecutorRegistry.getInstance().getExecutorById(ToolWindowId.DEBUG);
    assert project != null;
    final SearchListModel model = getModel();
    if (isMoreItem(index)) {
        final String pattern = myPopupField.getText();
        WidgetID wid = null;// w  w w. j  a v a 2  s .co m
        if (index == model.moreIndex.classes)
            wid = WidgetID.CLASSES;
        else if (index == model.moreIndex.files)
            wid = WidgetID.FILES;
        else if (index == model.moreIndex.settings)
            wid = WidgetID.SETTINGS;
        else if (index == model.moreIndex.actions)
            wid = WidgetID.ACTIONS;
        else if (index == model.moreIndex.symbols)
            wid = WidgetID.SYMBOLS;
        else if (index == model.moreIndex.runConfigurations)
            wid = WidgetID.RUN_CONFIGURATIONS;
        if (wid != null) {
            final WidgetID widgetID = wid;
            myCurrentWorker.doWhenProcessed(new Runnable() {
                @Override
                public void run() {
                    myCalcThread = new CalcThread(project, pattern, true);
                    myPopupActualWidth = 0;
                    myCurrentWorker = myCalcThread.insert(index, widgetID);
                }
            });

            return;
        }
    }
    final String pattern = getField().getText();
    final Object value = myList.getSelectedValue();
    saveHistory(project, pattern, value);
    IdeFocusManager focusManager = IdeFocusManager.findInstanceByComponent(getField().getTextEditor());
    if (myPopup != null && myPopup.isVisible()) {
        myPopup.cancel();
    }

    if (value instanceof BooleanOptionDescription) {
        final BooleanOptionDescription option = (BooleanOptionDescription) value;
        option.setOptionState(!option.isOptionEnabled());
        myList.revalidate();
        myList.repaint();
        getField().requestFocus();
        return;
    }

    if (value instanceof OptionsTopHitProvider) {
        //noinspection SSBasedInspection
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                getField().setText("#" + ((OptionsTopHitProvider) value).getId() + " ");
            }
        });
        return;
    }
    Runnable onDone = null;

    AccessToken token = ApplicationManager.getApplication().acquireReadActionLock();
    try {
        if (value instanceof PsiElement) {
            onDone = new Runnable() {
                @Override
                public void run() {
                    NavigationUtil.activateFileWithPsiElement((PsiElement) value, true);
                }
            };
            return;
        } else if (isVirtualFile(value)) {
            onDone = new Runnable() {
                @Override
                public void run() {
                    OpenSourceUtil.navigate(true, new OpenFileDescriptor(project, (VirtualFile) value));
                }
            };
            return;
        } else if (isActionValue(value) || isSetting(value) || isRunConfiguration(value)) {
            focusManager.requestDefaultFocus(true);
            final Component comp = myContextComponent;
            final AnActionEvent event = myActionEvent;
            IdeFocusManager.getInstance(project).doWhenFocusSettlesDown(new Runnable() {
                @Override
                public void run() {
                    Component c = comp;
                    if (c == null) {
                        c = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
                    }

                    if (isRunConfiguration(value)) {
                        ((ChooseRunConfigurationPopup.ItemWrapper) value).perform(project, executor,
                                DataManager.getInstance().getDataContext(c));
                    } else {
                        GotoActionAction.openOptionOrPerformAction(value, pattern, project, c, event);
                        if (isToolWindowAction(value))
                            return;
                    }
                }
            });
            return;
        } else if (value instanceof Navigatable) {
            onDone = new Runnable() {
                @Override
                public void run() {
                    OpenSourceUtil.navigate(true, (Navigatable) value);
                }
            };
            return;
        }
    } finally {
        token.finish();
        final ActionCallback callback = onFocusLost();
        if (onDone != null) {
            callback.doWhenDone(onDone);
        }
    }
    focusManager.requestDefaultFocus(true);
}

From source file:com.intellij.ide.CommandLineProcessor.java

License:Apache License

@Nullable
private static Project doOpenFile(VirtualFile virtualFile, int line) {
    final Project[] projects = ProjectManager.getInstance().getOpenProjects();
    if (projects.length == 0) {
        return PlatformProjectOpenProcessor.doOpenProject(virtualFile, null, false, line, null);
    } else {/*from ww  w .ja  v  a2s.  co m*/
        Project project = findBestProject(virtualFile, projects);
        if (line == -1) {
            new OpenFileDescriptor(project, virtualFile).navigate(true);
        } else {
            new OpenFileDescriptor(project, virtualFile, line - 1, 0).navigate(true);
        }
        return project;
    }
}

From source file:com.intellij.ide.diff.VirtualFileDiffElement.java

License:Apache License

@Override
@Nullable// w w  w.  ja  v  a  2 s . c  om
public OpenFileDescriptor getOpenFileDescriptor(@Nullable Project project) {
    if (project == null || project.isDefault())
        return null;
    return new OpenFileDescriptor(project, myFile);
}

From source file:com.intellij.ide.favoritesTreeView.FileGroupingProjectNode.java

License:Apache License

@Override
public void navigate(boolean requestFocus) {
    if (myVirtualFile != null) {
        new OpenFileDescriptor(myProject, myVirtualFile).navigate(requestFocus);
    }/*from   w ww  .j  a  va 2 s.  c  om*/
}

From source file:com.intellij.ide.JavaFilePasteProvider.java

License:Apache License

public void performPaste(@NotNull final DataContext dataContext) {
    final Project project = CommonDataKeys.PROJECT.getData(dataContext);
    final IdeView ideView = DataKeys.IDE_VIEW.getData(dataContext);
    if (project == null || ideView == null)
        return;/*from w w w.  j a  v  a 2 s .c om*/
    final PsiJavaFile javaFile = createJavaFileFromClipboardContent(project);
    if (javaFile == null)
        return;
    final PsiClass[] classes = javaFile.getClasses();
    if (classes.length < 1)
        return;
    final PsiDirectory targetDir = ideView.getOrChooseDirectory();
    if (targetDir == null)
        return;
    PsiClass publicClass = classes[0];
    for (PsiClass aClass : classes) {
        if (aClass.hasModifierProperty(PsiModifier.PUBLIC)) {
            publicClass = aClass;
            break;
        }
    }
    final PsiClass mainClass = publicClass;
    new WriteCommandAction(project, "Paste class '" + mainClass.getName() + "'") {
        @Override
        protected void run(Result result) throws Throwable {
            PsiFile file;
            try {
                file = targetDir.createFile(mainClass.getName() + ".java");
            } catch (IncorrectOperationException e) {
                return;
            }
            final Document document = PsiDocumentManager.getInstance(project).getDocument(file);
            document.setText(javaFile.getText());
            PsiDocumentManager.getInstance(project).commitDocument(document);
            if (file instanceof PsiJavaFile) {
                updatePackageStatement((PsiJavaFile) file, targetDir);
            }
            new OpenFileDescriptor(project, file.getVirtualFile()).navigate(true);
        }
    }.execute();
}

From source file:com.intellij.lang.ant.config.explorer.AntExplorer.java

License:Apache License

@Nullable
public Object getData(@NonNls Key<?> dataId) {
    if (PlatformDataKeys.NAVIGATABLE == dataId) {
        final AntBuildFile buildFile = getCurrentBuildFile();
        if (buildFile == null) {
            return null;
        }//w w  w  .j  av  a2  s.co m
        final VirtualFile file = buildFile.getVirtualFile();
        if (file == null) {
            return null;
        }
        final TreePath treePath = myTree.getLeadSelectionPath();
        if (treePath == null) {
            return null;
        }
        final DefaultMutableTreeNode node = (DefaultMutableTreeNode) treePath.getLastPathComponent();
        if (node == null) {
            return null;
        }
        if (node.getUserObject() instanceof AntTargetNodeDescriptor) {
            final AntTargetNodeDescriptor targetNodeDescriptor = (AntTargetNodeDescriptor) node.getUserObject();
            final AntBuildTargetBase buildTarget = targetNodeDescriptor.getTarget();
            final OpenFileDescriptor descriptor = buildTarget.getOpenFileDescriptor();
            if (descriptor != null) {
                final VirtualFile descriptorFile = descriptor.getFile();
                if (descriptorFile.isValid()) {
                    return descriptor;
                }
            }
        }
        if (file.isValid()) {
            return new OpenFileDescriptor(myProject, file);
        }
    } else if (PlatformDataKeys.TREE_EXPANDER == dataId) {
        return myProject != null ? myTreeExpander : null;
    } else if (PlatformDataKeys.VIRTUAL_FILE_ARRAY == dataId) {
        final TreePath[] paths = myTree.getSelectionPaths();
        if (paths == null) {
            return null;
        }
        final ArrayList<VirtualFile> result = new ArrayList<VirtualFile>();
        for (final TreePath path : paths) {
            for (DefaultMutableTreeNode node = (DefaultMutableTreeNode) path
                    .getLastPathComponent(); node != null; node = (DefaultMutableTreeNode) node.getParent()) {
                final Object userObject = node.getUserObject();
                if (!(userObject instanceof AntBuildFileNodeDescriptor)) {
                    continue;
                }
                final AntBuildFile buildFile = ((AntBuildFileNodeDescriptor) userObject).getBuildFile();
                if (buildFile != null) {
                    final VirtualFile virtualFile = buildFile.getVirtualFile();
                    if (virtualFile != null && virtualFile.isValid()) {
                        result.add(virtualFile);
                    }
                }
                break;
            }
        }
        if (result.size() == 0) {
            return null;
        }
        return VfsUtil.toVirtualFileArray(result);
    }
    return super.getData(dataId);
}

From source file:com.intellij.lang.properties.projectView.ResourceBundleNode.java

License:Apache License

public void navigate(final boolean requestFocus) {
    OpenFileDescriptor descriptor = new OpenFileDescriptor(getProject(),
            new ResourceBundleAsVirtualFile(getValue()));
    FileEditorManager.getInstance(getProject()).openTextEditor(descriptor, requestFocus);
}

From source file:com.intellij.project.LoadProjectTest.java

License:Apache License

public void testLoadProject() throws Exception {
    VirtualFile src = ProjectRootManager.getInstance(getProject()).getContentSourceRoots()[0];

    VirtualFile a = src.findFileByRelativePath("/x/AClass.java");
    assertNotNull(a);/*www.j a  v  a  2  s .  com*/
    PsiFile fileA = getPsiManager().findFile(a);
    assertNotNull(fileA);
    fileA.navigate(true);
    Editor editorA = FileEditorManager.getInstance(getProject())
            .openTextEditor(new OpenFileDescriptor(getProject(), a), true);
    assertNotNull(editorA);
    CodeInsightTestFixtureImpl.instantiateAndRun(fileA, editorA, new int[0], false);

    VirtualFile b = src.findFileByRelativePath("/x/BClass.java");
    assertNotNull(b);
    PsiFile fileB = getPsiManager().findFile(b);
    assertNotNull(fileB);
    fileB.navigate(true);
    Editor editorB = FileEditorManager.getInstance(getProject())
            .openTextEditor(new OpenFileDescriptor(getProject(), b), true);
    assertNotNull(editorB);
    CodeInsightTestFixtureImpl.instantiateAndRun(fileB, editorB, new int[0], false);

    FileEditor[] allEditors = FileEditorManager.getInstance(getProject()).getAllEditors();
    assertEquals(2, allEditors.length);

    FileEditorManager.getInstance(getProject()).closeFile(a);
    FileEditorManager.getInstance(getProject()).closeFile(b);
    ProjectManagerEx.getInstanceEx().closeAndDispose(getProject());

    LeakHunter.checkLeak(ApplicationManager.getApplication(), PsiFileImpl.class, new Processor<PsiFileImpl>() {
        @Override
        public boolean process(PsiFileImpl psiFile) {
            return psiFile.getViewProvider().getVirtualFile().getFileSystem() instanceof LocalFileSystem;
        }
    });
}

From source file:com.intellij.refactoring.extractMethod.ExtractMethodHandler.java

License:Apache License

@Nullable
private static Editor openEditor(final Project project, final PsiFile file) {
    final VirtualFile virtualFile = file.getVirtualFile();
    LOG.assertTrue(virtualFile != null);
    final OpenFileDescriptor fileDescriptor = new OpenFileDescriptor(project, virtualFile);
    return FileEditorManager.getInstance(project).openTextEditor(fileDescriptor, false);
}

From source file:com.intellij.refactoring.util.duplicates.DuplicatesImpl.java

License:Apache License

public static void invoke(final Project project, final MatchProvider provider) {
    final List<Match> duplicates = provider.getDuplicates();
    int idx = 0;//  w w w .  ja  v a  2 s. com
    final Ref<Boolean> showAll = new Ref<Boolean>();
    final String confirmDuplicatePrompt = getConfirmationPrompt(provider, duplicates);
    for (final Match match : duplicates) {
        final PsiFile file = match.getFile();
        final VirtualFile virtualFile = file.getVirtualFile();
        if (virtualFile == null || !virtualFile.isValid())
            return;
        if (!CommonRefactoringUtil.checkReadOnlyStatus(project, file))
            return;
        final Editor editor = FileEditorManager.getInstance(project)
                .openTextEditor(new OpenFileDescriptor(project, virtualFile), false);
        LOG.assertTrue(editor != null);
        if (!match.getMatchStart().isValid() || !match.getMatchEnd().isValid())
            continue;
        if (replaceMatch(project, provider, match, editor, ++idx, duplicates.size(), showAll,
                confirmDuplicatePrompt, false))
            return;
    }
}