List of usage examples for com.intellij.openapi.fileEditor OpenFileDescriptor OpenFileDescriptor
public OpenFileDescriptor(@NotNull Project project, @NotNull VirtualFile file, int offset)
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) { } }); }