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, int offset) 

Source Link

Usage

From source file:com.thoughtworks.gauge.annotator.CreateStepImplFix.java

License:Open Source License

private void addImpl(final Project project, final VirtualFile file) {
    ApplicationManager.getApplication().invokeLater(new Runnable() {
        @Override/* ww w . j  a v a2 s . com*/
        public void run() {
            new WriteCommandAction.Simple(project) {
                @Override
                protected void run() throws Throwable {
                    PsiFile psifile = PsiManager.getInstance(project).findFile(file);
                    if (!FileModificationService.getInstance().prepareFileForWrite(psifile)) {
                        return;
                    }
                    PsiMethod addedStepImpl = addStepImplMethod(psifile);
                    final TemplateBuilder builder = TemplateBuilderFactory.getInstance()
                            .createTemplateBuilder(addedStepImpl);
                    templateMethodName(addedStepImpl, builder);
                    templateParams(addedStepImpl, builder);
                    templateBody(addedStepImpl, builder);
                    userTemplateModify(builder);
                }
            }.execute();
        }

        private PsiMethod addStepImplMethod(PsiFile psifile) {

            final PsiClass psiClass = PsiTreeUtil.getChildOfType(psifile, PsiClass.class);
            PsiDocumentManager.getInstance(project).commitAllDocuments();

            StepValue stepValue = step.getStepValue();
            final StringBuilder text = new StringBuilder(String
                    .format("@" + Step.class.getName() + "(\"%s\")\n", stepValue.getStepAnnotationText()));
            text.append(String.format("public void %s(%s){\n\n", getMethodName(psiClass),
                    getParamList(stepValue.getParameters())));
            text.append("}\n");
            final PsiMethod stepMethod = JavaPsiFacade.getElementFactory(project)
                    .createMethodFromText(text.toString(), psiClass);
            PsiMethod addedElement = (PsiMethod) psiClass.add(stepMethod);
            JavaCodeStyleManager.getInstance(project).shortenClassReferences(addedElement);
            CodeStyleManager.getInstance(project).reformat(psiClass);
            addedElement = CodeInsightUtilCore.forcePsiPostprocessAndRestoreElement(addedElement);
            return addedElement;
        }

        private String getParamList(List<String> params) {
            StringBuilder paramlistBuilder = new StringBuilder();
            for (int i = 0; i < params.size(); i++) {
                paramlistBuilder.append("Object arg").append(i);
                if (i != params.size() - 1) {
                    paramlistBuilder.append(", ");
                }
            }
            return paramlistBuilder.toString();
        }

        private void templateMethodName(PsiMethod addedStepImpl, TemplateBuilder builder) {
            PsiIdentifier methodName = addedStepImpl.getNameIdentifier();
            builder.replaceElement(methodName, methodName.getText());
        }

        private void templateParams(PsiMethod addedElement, TemplateBuilder builder) {
            PsiParameterList paramsList = addedElement.getParameterList();
            PsiParameter[] parameters = paramsList.getParameters();
            for (PsiParameter parameter : parameters) {
                PsiElement nameIdentifier = parameter.getNameIdentifier();
                PsiTypeElement typeElement = parameter.getTypeElement();
                if (nameIdentifier != null) {
                    builder.replaceElement(typeElement, typeElement.getText());
                    builder.replaceElement(nameIdentifier, nameIdentifier.getText());
                }
            }
        }

        private void templateBody(PsiMethod addedElement, TemplateBuilder builder) {
            final PsiCodeBlock body = addedElement.getBody();
            if (body != null) {
                builder.replaceElement(body, new TextRange(2, 2), "");
            }
        }

        private void userTemplateModify(TemplateBuilder builder) {
            Editor editor = FileEditorManager.getInstance(project)
                    .openTextEditor(new OpenFileDescriptor(project, file, 0), true);
            final PsiDocumentManager documentManager = PsiDocumentManager.getInstance(project);
            if (editor != null) {
                documentManager.doPostponedOperationsAndUnblockDocument(editor.getDocument());
                builder.run(editor, false);
            }
        }
    });

}

From source file:io.flutter.preview.PreviewView.java

License:Open Source License

private void jumpToOutlineInEditor(FlutterOutline outline, boolean focusEditor) {
    if (outline == null) {
        return;// ww  w  .jav  a2 s. c o  m
    }
    final int offset = outline.getDartElement() != null ? outline.getDartElement().getLocation().getOffset()
            : outline.getOffset();
    final int editorOffset = getConvertedFileOffset(offset);

    sendAnalyticEvent("jumpToSource");

    if (currentFile != null) {
        currentEditor.getCaretModel().removeCaretListener(caretListener);
        try {
            new OpenFileDescriptor(project, currentFile, editorOffset).navigate(focusEditor);
        } finally {
            currentEditor.getCaretModel().addCaretListener(caretListener);
        }
    }

    if (myRenderHelper != null) {
        myRenderHelper.setOffset(editorOffset);
        previewArea.select(ImmutableList.of(outline));
    }
}

From source file:org.codehaus.groovy.intellij.configuration.GroovyConfigurationTypeTest.java

License:Apache License

public void testReturnsANullConfigurationWhenTheGivenLocationDoesNotPointToAGroovyScript() {
    Mock stubLocation = mock(Location.class);
    stubLocation.stubs().method("getPsiElement").will(returnValue(mock(PsiElement.class).proxy()));

    VirtualFile file = virtualFile().withFileType(StdFileTypes.XML).build();
    OpenFileDescriptor openFileDescriptor = new OpenFileDescriptor(null, file, -1);
    stubLocation.stubs().method("getOpenFileDescriptor").will(returnValue(openFileDescriptor));

    RunnerAndConfigurationSettings settings = configurationType
            .createConfigurationByLocation((Location) stubLocation.proxy());
    assertEquals("runner and configuration settings", null, settings);
}

From source file:org.codehaus.groovy.intellij.configuration.GroovyConfigurationTypeTest.java

License:Apache License

private Location<PsiElement> createStubbedLocationPretendingToPointToAGroovyScript() {
    Mock stubLocation = mock(Location.class);

    Mock mockProjectFileIndex = mock(ProjectFileIndex.class);
    Project stubbedProject = project().withProjectFile((ProjectFileIndex) mockProjectFileIndex.proxy())
            .canCreateRunConfigurations().build();

    stubLocation.stubs().method("getProject").will(returnValue(stubbedProject));

    Mock stubPsiElement = mock(PsiElement.class);
    stubLocation.stubs().method("getPsiElement").will(returnValue(stubPsiElement.proxy()));

    Mock stubPsiManager = mock(PsiManager.class);
    stubPsiElement.stubs().method("getManager").will(returnValue(stubPsiManager.proxy()));
    stubPsiManager.stubs().method("getProject").will(returnValue(stubbedProject));

    VirtualFile groovyScriptFile = createGroovyScriptFile();
    mockProjectFileIndex.expects(once()).method("getModuleForFile").with(same(groovyScriptFile))
            .will(returnValue(module().build()));
    ;//from  w  w w . ja  va 2 s .c  o m
    stubLocation.stubs().method("getOpenFileDescriptor")
            .will(returnValue(new OpenFileDescriptor(stubbedProject, groovyScriptFile, -1)));

    return (Location<PsiElement>) stubLocation.proxy();
}

From source file:org.cordovastudio.actions.ShowStoryboardEditorAction.java

License:Apache License

public void showNavigationEditor(@Nullable Project project, final String dir, final String file) {
    if (project == null) {
        return;//  ww w. j  a  va2  s .  c  o m
    }
    final VirtualFile baseDir = project.getBaseDir();
    if (baseDir == null) { // this happens when we have the 'default' project, we can't launch nav editor here
        return;
    }
    final String relativePathOfNavDir = ".navigation" + "/" + dir;
    VirtualFile navFile = baseDir.findFileByRelativePath(relativePathOfNavDir + "/" + file);
    if (navFile == null) {
        navFile = ApplicationManager.getApplication().runWriteAction(new Computable<VirtualFile>() {
            @Override
            public VirtualFile compute() {
                try {
                    VirtualFile dir = mkDirs(baseDir, relativePathOfNavDir);
                    return dir.createChildData(null, file);
                } catch (IOException e) {
                    assert false;
                    return null;
                }

            }
        });
    }
    OpenFileDescriptor descriptor = new OpenFileDescriptor(project, navFile, 0);
    FileEditorManager manager = FileEditorManager.getInstance(project);
    manager.openEditor(descriptor, true);
    manager.setSelectedEditor(navFile, CordovaStoryboardEditorProvider.ID);
}

From source file:org.cordovastudio.editors.designer.designSurface.preview.RenderPreviewManager.java

License:Apache License

/**
 * Switch to the given configuration preview
 *
 * @param preview the preview to switch to
 *//* w w  w.  ja  va2 s .  c  om*/
public void switchTo(@NotNull RenderPreview preview) {
    assert myPreviews != null;
    RenderConfiguration originalConfiguration = myRenderContext.getConfiguration();
    if (originalConfiguration == null) {
        return;
    }

    VirtualFile input = preview.getAlternateInput();
    if (input != null) {
        // This switches to the given file, but the file might not have
        // an identical configuration to what was shown in the preview.
        // For example, while viewing a 10" layout-xlarge file, it might
        // show a preview for a 5" version tied to the default layout. If
        // you click on it, it will open the default layout file, but it might
        // be using a different screen size; any of those that match the
        // default layout, say a 3.8".
        //
        // Thus, we need to also perform a screen size sync first
        RenderConfiguration configuration = preview.getConfiguration();
        if (configuration instanceof NestedRenderConfiguration) {
            NestedRenderConfiguration nestedConfig = (NestedRenderConfiguration) configuration;
            boolean setSize = nestedConfig.isOverridingDevice();
            if (configuration instanceof VaryingRenderConfiguration) {
                VaryingRenderConfiguration c = (VaryingRenderConfiguration) configuration;
                setSize |= c.isAlternatingDevice();
            }

            if (setSize) {
                RenderConfigurationManager configurationManager = originalConfiguration
                        .getConfigurationManager();
                VirtualFile editedFile = originalConfiguration.getFile();
                assert editedFile != null;

                /* Commented out for now, as we do not make use of variantions
                TODO: re-comment-in if we use variantions
                        
                configurationManager.syncToVariations(CFG_DEVICE | CFG_DEVICE_STATE, editedFile, configuration, false, false);
                */
            }
        }

        Project project = configuration.getModule().getProject();
        OpenFileDescriptor descriptor = new OpenFileDescriptor(project, input, -1);
        FileEditorManager.getInstance(project).openEditor(descriptor, true);
        // TODO: Ensure that the layout editor is focused?

        return;
    }

    // The new configuration is the configuration which will become the configuration
    // in the layout editor's chooser
    RenderConfiguration previewConfiguration = preview.getConfiguration();
    RenderConfiguration newConfiguration = previewConfiguration;
    if (newConfiguration instanceof NestedRenderConfiguration) {
        // Should never use a complementing configuration for the main
        // rendering's configuration; instead, create a new configuration
        // with a snapshot of the configuration's current values
        newConfiguration = previewConfiguration.clone();

        // Remap all the previews to be parented to this new copy instead
        // of the old one (which is no longer controlled by the chooser)
        for (RenderPreview p : myPreviews) {
            RenderConfiguration configuration = p.getConfiguration();
            if (configuration instanceof NestedRenderConfiguration) {
                NestedRenderConfiguration nested = (NestedRenderConfiguration) configuration;
                nested.setParent(newConfiguration);
            }
        }
    }

    // Make a preview for the configuration which *was* showing in the
    // chooser up until this point:
    RenderPreview newPreview = getStashedPreview();
    if (newPreview == null) {
        newPreview = RenderPreview.create(this, originalConfiguration, false);
    }

    // Update its configuration such that it is complementing or inheriting
    // from the new chosen configuration
    if (previewConfiguration instanceof VaryingRenderConfiguration) {
        VaryingRenderConfiguration varying = VaryingRenderConfiguration
                .create((VaryingRenderConfiguration) previewConfiguration, newConfiguration);
        varying.updateDisplayName();
        originalConfiguration = varying;
        newPreview.setConfiguration(originalConfiguration);
    } else if (previewConfiguration instanceof NestedRenderConfiguration) {
        NestedRenderConfiguration nested = NestedRenderConfiguration.create(
                (NestedRenderConfiguration) previewConfiguration, originalConfiguration, newConfiguration);
        nested.setDisplayName(nested.computeDisplayName());
        originalConfiguration = nested;
        newPreview.setConfiguration(originalConfiguration);
    }

    // Replace clicked preview with preview of the formerly edited main configuration
    // This doesn't work yet because the image overlay has had its image
    // replaced by the configuration previews! I should make a list of them
    for (int i = 0, n = myPreviews.size(); i < n; i++) {
        if (preview == myPreviews.get(i)) {
            myPreviews.set(i, newPreview);
            break;
        }
    }

    // Stash the corresponding preview (not active) on the canvas so we can
    // retrieve it if clicking to some other preview later
    setStashedPreview(preview);
    preview.setVisible(false);

    // Switch to the configuration from the clicked preview (though it's
    // most likely a copy, see above)
    myRenderContext.setConfiguration(newConfiguration);

    myNeedLayout = true;
    redraw();

    animateTransition(preview, newPreview);
}

From source file:org.cordovastudio.editors.designer.rendering.HtmlLinkManager.java

License:Apache License

private static boolean openEditor(@NotNull Project project, @NotNull VirtualFile file, int offset) {
    OpenFileDescriptor descriptor = new OpenFileDescriptor(project, file, offset);
    return !FileEditorManager.getInstance(project).openEditor(descriptor, true).isEmpty();
}

From source file:org.cordovastudio.editors.storyboard.model.CordovaRootComponent.java

License:Apache License

public void launchLayoutEditor() {
    if (myLayoutFile != null) {
        Project project = myRenderingParameters.getProject();
        VirtualFile virtualFile = myLayoutFile.getVirtualFile();
        OpenFileDescriptor descriptor = new OpenFileDescriptor(project, virtualFile, 0);
        FileEditorManager manager = FileEditorManager.getInstance(project);
        manager.openEditor(descriptor, true);
        manager.setSelectedEditor(virtualFile, CordovaDesignerEditorProvider.CORDOVA_DESIGNER_ID);
    }//from   w ww .j a  va 2s . co  m
}

From source file:org.eclipse.xtext.idea.build.BuildProgressReporter.java

License:Open Source License

protected CompilerMessage getCompilerMessage(final URI validated, final Issue issue) {
    final VirtualFile file = VirtualFileURIUtil.getVirtualFile(validated);
    CompilerMessageCategory _category = this.getCategory(issue);
    String _message = issue.getMessage();
    Integer _lineNumber = issue.getLineNumber();
    Integer _column = issue.getColumn();
    Integer _offset = issue.getOffset();
    OpenFileDescriptor _openFileDescriptor = new OpenFileDescriptor(this.project, file, (_offset).intValue());
    return new CompilerMessageImpl(this.project, _category, _message, file, (_lineNumber).intValue(),
            (_column).intValue(), _openFileDescriptor);
}

From source file:org.exbin.deltahex.intellij.DeltaHexFileEditor.java

License:Apache License

public DeltaHexFileEditor(Project project) {
    this.project = project;
    editorPanel = new JPanel();
    initComponents();/*from  ww  w .  j a  v a2s .c o m*/

    preferences = getPreferences();

    codeArea = new CodeArea();
    codeArea.setPainter(new HighlightNonAsciiCodeAreaPainter(codeArea));
    codeArea.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
    codeArea.getCaret().setBlinkRate(300);
    statusPanel = new HexStatusPanel();
    registerEncodingStatus(statusPanel);
    encodingsHandler = new EncodingsHandler(new TextEncodingStatusApi() {
        @Override
        public String getEncoding() {
            return encodingStatus.getEncoding();
        }

        @Override
        public void setEncoding(String encodingName) {
            codeArea.setCharset(Charset.forName(encodingName));
            encodingStatus.setEncoding(encodingName);
            preferences.setValue(DeltaHexFileEditor.PREFERENCES_ENCODING_SELECTED, encodingName);
        }
    });

    propertyChangeSupport = new PropertyChangeSupport(this);
    // CodeAreaUndoHandler(codeArea);
    // undoHandler = new HexUndoIntelliJHandler(codeArea, project, this);
    undoHandler = new CodeAreaUndoHandler(codeArea);
    loadFromPreferences();

    undoHandler.addUndoUpdateListener(new BinaryDataUndoUpdateListener() {
        @Override
        public void undoCommandPositionChanged() {
            codeArea.repaint();
            updateUndoState();
            notifyModified();
        }

        @Override
        public void undoCommandAdded(final BinaryDataCommand command) {
            updateUndoState();
            notifyModified();
        }
    });
    updateUndoState();

    getSegmentsRepository();
    setNewData();
    CodeAreaOperationCommandHandler commandHandler = new CodeAreaOperationCommandHandler(codeArea, undoHandler);
    codeArea.setCommandHandler(commandHandler);
    editorPanel.add(codeArea, BorderLayout.CENTER);
    editorPanel.add(statusPanel, BorderLayout.SOUTH);
    registerHexStatus(statusPanel);
    goToHandler = new GoToHandler(codeArea);

    codeArea.addMouseListener(new MouseAdapter() {
        @Override
        public void mousePressed(MouseEvent e) {
            maybeShowPopup(e);
        }

        @Override
        public void mouseReleased(MouseEvent e) {
            maybeShowPopup(e);
        }

        private void maybeShowPopup(MouseEvent e) {
            if (e.isPopupTrigger()) {
                JPopupMenu popupMenu = createContextMenu();
                popupMenu.show(e.getComponent(), e.getX(), e.getY());
            }
        }
    });

    codeTypeComboBox.setSelectedIndex(codeArea.getCodeType().ordinal());

    editorPanel.getActionMap().put("copy-to-clipboard", new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
            codeArea.copy();
        }
    });
    editorPanel.getActionMap().put("cut-to-clipboard", new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
            codeArea.cut();
        }
    });
    editorPanel.getActionMap().put("paste-from-clipboard", new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
            codeArea.paste();
        }
    });

    applyFromCodeArea();

    int metaMaskValue;
    try {
        metaMaskValue = java.awt.Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
    } catch (java.awt.HeadlessException ex) {
        metaMaskValue = java.awt.Event.CTRL_MASK;
    }

    metaMask = metaMaskValue;

    codeArea.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent keyEvent) {
            int modifiers = keyEvent.getModifiers();
            if (modifiers == metaMask) {
                int keyCode = keyEvent.getKeyCode();
                switch (keyCode) {
                case KeyEvent.VK_F: {
                    showSearchPanel(false);
                    break;
                }
                case KeyEvent.VK_G: {
                    goToHandler.getGoToLineAction().actionPerformed(null);
                    break;
                }
                case KeyEvent.VK_S: {
                    saveFileButtonActionPerformed(null);
                    break;
                }
                }
            }

            if (modifiers == InputEvent.CTRL_MASK && keyEvent.getKeyCode() == KeyEvent.VK_Z) {
                try {
                    if (undoHandler.canUndo()) {
                        undoHandler.performUndo();
                    }
                } catch (BinaryDataOperationException e) {
                    e.printStackTrace();
                }
            } else if (modifiers == (InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK)
                    && keyEvent.getKeyCode() == KeyEvent.VK_Z) {
                try {
                    if (undoHandler.canRedo()) {
                        undoHandler.performRedo();
                    }
                } catch (BinaryDataOperationException e) {
                    e.printStackTrace();
                }
            }
        }
    });

    MessageBus messageBus = project.getMessageBus();
    MessageBusConnection connect = messageBus.connect();
    connect.subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerListener() {
        @Override
        public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
        }

        @Override
        public void fileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
            if (virtualFile != null) {
                if (!releaseFile()) {
                    // TODO Intercept close event instead of editor recreation
                    OpenFileDescriptor descriptor = new OpenFileDescriptor(project, virtualFile, 0);
                    FileEditorManager fileEditorManager = FileEditorManager.getInstance(project);
                    List<FileEditor> editors = fileEditorManager.openEditor(descriptor, true);
                    fileEditorManager.setSelectedEditor(virtualFile,
                            DeltaHexWindowProvider.DELTAHEX_EDITOR_TYPE_ID);
                    for (FileEditor fileEditor : editors) {
                        if (fileEditor instanceof DeltaHexFileEditor) {
                            ((DeltaHexFileEditor) fileEditor).reopenFile(virtualFile, codeArea.getData(),
                                    undoHandler);
                        }
                    }
                    closeData(false);
                } else {
                    closeData(true);
                }
            }

            virtualFile = null;
        }

        @Override
        public void selectionChanged(@NotNull FileEditorManagerEvent event) {
        }
    });
}