List of usage examples for com.intellij.openapi.fileEditor OpenFileDescriptor getFile
@NotNull
public VirtualFile getFile()
From source file:com.intellij.psi.impl.source.xml.XmlAttributeDeclImpl.java
License:Apache License
public void navigate(final boolean requestFocus) { if (isPhysical()) { super.navigate(requestFocus); return;//from w w w . j a v a2 s. c o m } final PsiNamedElement psiNamedElement = XmlUtil.findRealNamedElement(this); Navigatable navigatable = EditSourceUtil.getDescriptor(psiNamedElement); if (psiNamedElement instanceof XmlEntityDecl) { final OpenFileDescriptor fileDescriptor = (OpenFileDescriptor) navigatable; navigatable = new OpenFileDescriptor(fileDescriptor.getProject(), fileDescriptor.getFile(), psiNamedElement.getTextRange().getStartOffset() + psiNamedElement.getText().indexOf(getName())); } navigatable.navigate(requestFocus); }
From source file:com.intellij.unscramble.AnnotateStackTraceAction.java
License:Apache License
@Override public void actionPerformed(AnActionEvent e) { cache = new HashMap<Integer, VcsFileRevision>(); ProgressManager.getInstance().run(new Task.Backgroundable(myEditor.getProject(), "Getting file history", true, PerformInBackgroundOption.ALWAYS_BACKGROUND) { @Override//w ww. j a v a 2s . c o m public boolean shouldStartInBackground() { return true; } @Override public void onSuccess() { } private void showGutter() { final EditorGutterAction action = new EditorGutterAction() { @Override public void doAction(int lineNum) { final VcsFileRevision revision = cache.get(lineNum); final List<RangeHighlighter> links = myHyperlinks.findAllHyperlinksOnLine(lineNum); if (!links.isEmpty()) { HyperlinkInfo info = myHyperlinks.getHyperlinks().get(links.get(links.size() - 1)); if (info instanceof FileHyperlinkInfo) { final VirtualFile file = ((FileHyperlinkInfo) info).getDescriptor().getFile(); final Project project = getProject(); final AbstractVcs vcs = ProjectLevelVcsManagerEx.getInstanceEx(project) .getVcsFor(file); if (vcs != null) { final VcsRevisionNumber number = revision.getRevisionNumber(); final VcsKey vcsKey = vcs.getKeyInstanceMethod(); ShowAllAffectedGenericAction.showSubmittedFiles(project, number, file, vcsKey); } } } } @Override public Cursor getCursor(int lineNum) { return Cursor.getPredefinedCursor(Cursor.HAND_CURSOR); } }; myEditor.getGutter().registerTextAnnotation(new ActiveAnnotationGutter() { @Override public void doAction(int lineNum) { } @Override public Cursor getCursor(int lineNum) { return Cursor.getDefaultCursor(); } @Override public String getLineText(int line, Editor editor) { final VcsFileRevision revision = cache.get(line); if (revision != null) { return String.format("%" + maxDateLength + "s", DateFormatUtil.formatPrettyDate(revision.getRevisionDate())) + " " + revision.getAuthor(); } return ""; } @Override public String getToolTip(int line, Editor editor) { final VcsFileRevision revision = cache.get(line); if (revision != null) { return XmlStringUtil.wrapInHtml(revision.getAuthor() + " " + DateFormatUtil.formatDateTime(revision.getRevisionDate()) + "<br/>" + revision.getCommitMessage()); } return null; } @Override public EditorFontType getStyle(int line, Editor editor) { return line == newestLine ? EditorFontType.BOLD : EditorFontType.PLAIN; } @Override public ColorKey getColor(int line, Editor editor) { return AnnotationSource.LOCAL.getColor(); } @Override public Color getBgColor(int line, Editor editor) { return null; } @Override public List<AnAction> getPopupActions(int line, Editor editor) { return Collections.emptyList(); } @Override public void gutterClosed() { myGutterShowed = false; } }, action); myGutterShowed = true; } @Override public void run(@NotNull ProgressIndicator indicator) { Date newestDate = null; List<VirtualFile> files = new ArrayList<VirtualFile>(); for (int line = 0; line < myEditor.getDocument().getLineCount(); line++) { indicator.checkCanceled(); final List<RangeHighlighter> links = myHyperlinks.findAllHyperlinksOnLine(line); if (links.size() > 0) { final HyperlinkInfo info = myHyperlinks.getHyperlinks().get(links.get(links.size() - 1)); if (info instanceof FileHyperlinkInfo) { final OpenFileDescriptor fileDescriptor = ((FileHyperlinkInfo) info).getDescriptor(); if (fileDescriptor != null) { final VirtualFile file = fileDescriptor.getFile(); if (files2lines.containsKey(file)) { files2lines.get(file).add(line); } else { final ArrayList<Integer> lines = new ArrayList<Integer>(); lines.add(line); files2lines.put(file, lines); files.add(file); } } } } } for (VirtualFile file : files) { indicator.checkCanceled(); final AbstractVcs vcs = VcsUtil.getVcsFor(myEditor.getProject(), file); FilePath filePath = VcsContextFactory.SERVICE.getInstance().createFilePathOn(file); if (vcs != null) { try { final VcsHistoryProvider provider = vcs.getVcsHistoryProvider(); final VcsHistorySession session; if (provider != null) { session = provider.createSessionFor(filePath); final List<VcsFileRevision> list; if (session != null) { list = session.getRevisionList(); final List<Integer> lines = files2lines.get(file); if (list != null && !list.isEmpty()) { final VcsFileRevision revision = list.get(0); final Date date = revision.getRevisionDate(); if (newestDate == null || date.after(newestDate)) { newestDate = date; newestLine = lines.get(0); } final int length = DateFormatUtil.formatPrettyDate(date).length(); if (length > maxDateLength) { maxDateLength = length; } for (Integer line : lines) { cache.put(line, revision); } ApplicationManager.getApplication().invokeLater(new Runnable() { @Override public void run() { if (!myGutterShowed) { showGutter(); } else { ((EditorGutterComponentEx) myEditor.getGutter()) .revalidateMarkup(); } } }); } } } } catch (VcsException ignored) { ignored.printStackTrace(); } } } } }); }
From source file:org.eclipse.xtext.idea.execution.TraceBasedExceptionFilter.java
License:Open Source License
@Override public Filter.Result applyFilter(final String line, final int textEndOffset) { final Filter.Result result = super.applyFilter(line, textEndOffset); boolean _equals = Objects.equal(result, null); if (_equals) { return null; }/*w ww .jav a 2 s.c om*/ List<Filter.ResultItem> _resultItems = result.getResultItems(); final Function1<Filter.ResultItem, Boolean> _function = (Filter.ResultItem it) -> { HyperlinkInfo _hyperlinkInfo = it.getHyperlinkInfo(); return Boolean.valueOf((!Objects.equal(_hyperlinkInfo, null))); }; final Filter.ResultItem resultItem = IterableExtensions.<Filter.ResultItem>findFirst(_resultItems, _function); final HyperlinkInfo hyperlinkInfo = resultItem.getHyperlinkInfo(); if ((hyperlinkInfo instanceof FileHyperlinkInfo)) { final OpenFileDescriptor descriptor = ((FileHyperlinkInfo) hyperlinkInfo).getDescriptor(); boolean _notEquals = (!Objects.equal(descriptor, null)); if (_notEquals) { VirtualFile _file = descriptor.getFile(); Project _project = descriptor.getProject(); final VirtualFileInProject fileInProject = new VirtualFileInProject(_file, _project); boolean _isGenerated = this.traceProvider.isGenerated(fileInProject); if (_isGenerated) { final IIdeaTrace trace = this.traceProvider.getTraceToSource(fileInProject); final RangeMarker rangeMarker = descriptor.getRangeMarker(); if (((!Objects.equal(trace, null)) && (!Objects.equal(rangeMarker, null)))) { Application _application = ApplicationManager.getApplication(); final Computable<Integer> _function_1 = () -> { int _xblockexpression = (int) 0; { FileDocumentManager _instance = FileDocumentManager.getInstance(); VirtualFile _file_1 = descriptor.getFile(); final Document document = _instance.getDocument(_file_1); int _startOffset = rangeMarker.getStartOffset(); final int lineNumber = document.getLineNumber(_startOffset); _xblockexpression = DocumentUtil.getFirstNonSpaceCharOffset(document, lineNumber); } return Integer.valueOf(_xblockexpression); }; final Integer nonSpaceCharOffset = _application.<Integer>runReadAction(_function_1); TextRegion _textRegion = new TextRegion((nonSpaceCharOffset).intValue(), 0); final ILocationInVirtualFile location = trace.getBestAssociatedLocation(_textRegion); boolean _notEquals_1 = (!Objects.equal(location, null)); if (_notEquals_1) { VirtualFileInProject _platformResource = location.getPlatformResource(); Project _project_1 = _platformResource.getProject(); VirtualFileInProject _platformResource_1 = location.getPlatformResource(); VirtualFile _file_1 = _platformResource_1.getFile(); ITextRegionWithLineInformation _textRegion_1 = location.getTextRegion(); int _lineNumber = _textRegion_1.getLineNumber(); final OpenFileDescriptor sourceFileDescriptor = new OpenFileDescriptor(_project_1, _file_1, _lineNumber, 0); final OpenFileHyperlinkInfo linkInfo = new OpenFileHyperlinkInfo(sourceFileDescriptor); int _highlightStartOffset = resultItem.getHighlightStartOffset(); int _highlightEndOffset = resultItem.getHighlightEndOffset(); TextAttributes _highlightAttributes = resultItem.getHighlightAttributes(); return new Filter.Result(_highlightStartOffset, _highlightEndOffset, linkInfo, _highlightAttributes); } } } } } return result; }
From source file:org.jetbrains.jet.plugin.filters.JetExceptionFilterTest.java
License:Apache License
private void doTest(@NotNull String fileName, @NotNull String className, int lineNumber) { if (rootDir == null) { configure();//from w w w . j a v a 2 s. co m } assert rootDir != null; Filter filter = jetExceptionFilterFactory.create(GlobalSearchScope.allScope(myProject)); String line = createStackTraceElementLine(fileName, className, lineNumber); Filter.Result result = filter.applyFilter(line, 0); assertNotNull(result); assertInstanceOf(result.hyperlinkInfo, OpenFileHyperlinkInfo.class); OpenFileHyperlinkInfo info = (OpenFileHyperlinkInfo) result.hyperlinkInfo; OpenFileDescriptor descriptor = info.getDescriptor(); assertNotNull(descriptor); VirtualFile expectedFile = VfsUtil.findRelativeFile(fileName, rootDir); assertNotNull(expectedFile); assertEquals(expectedFile, descriptor.getFile()); Document document = FileDocumentManager.getInstance().getDocument(expectedFile); assertNotNull(document); int expectedOffset = document.getLineStartOffset(lineNumber - 1); assertEquals(expectedOffset, descriptor.getOffset()); }
From source file:org.jetbrains.kotlin.idea.filters.JetExceptionFilterTest.java
License:Apache License
private void doTest(@NotNull String fileName, int lineNumber, @NotNull Function1<VirtualFile, String> className) { if (rootDir == null) { configure();/*from w w w . j av a 2 s . com*/ } assert rootDir != null; Filter filter = new JetExceptionFilterFactory().create(GlobalSearchScope.allScope(myProject)); VirtualFile expectedFile = VfsUtilCore.findRelativeFile(fileName, rootDir); assertNotNull(expectedFile); String line = createStackTraceElementLine(fileName, className.invoke(expectedFile), lineNumber); Filter.Result result = filter.applyFilter(line, 0); assertNotNull(result); HyperlinkInfo info = result.getFirstHyperlinkInfo(); assertNotNull(info); assertInstanceOf(info, OpenFileHyperlinkInfo.class); OpenFileDescriptor descriptor = ((OpenFileHyperlinkInfo) info).getDescriptor(); assertNotNull(descriptor); assertEquals(expectedFile, descriptor.getFile()); Document document = FileDocumentManager.getInstance().getDocument(expectedFile); assertNotNull(document); int expectedOffset = document.getLineStartOffset(lineNumber - 1); assertEquals(expectedOffset, descriptor.getOffset()); }
From source file:org.jetbrains.plugins.ruby.addins.rspec.run.configuration.RSpecRunConfigurationType.java
License:Apache License
@Override @Nullable// w w w .j a v a 2 s . com public RunnerAndConfigurationSettings createConfigurationByLocation(final @NotNull Location location) { // if not in psi file final PsiElement locationElement = location.getPsiElement(); final RFile containingFile = RubyPsiUtil.getRFile(locationElement); final OpenFileDescriptor openedFile = location.getOpenFileDescriptor(); if (containingFile == null || openedFile == null) { // if in psi directory if (locationElement instanceof PsiDirectory) { return createRunAllSpecsInFolderConf((PsiDirectory) locationElement); } return null; } final VirtualFile file = openedFile.getFile(); if (!RubyVirtualFileScanner.isRubyFile(file)) { return null; } final Project project = location.getProject(); // Configuration name final String name = file.getNameWithoutExtension(); //if selected element is RSPEC Test File if (RSpecUtil.isRSpecTestFile(file)) { return createRunRSpecScriptTestsConf(project, file, name); } return null; }
From source file:org.jetbrains.plugins.ruby.ruby.run.confuguration.RubyRunConfigurationType.java
License:Apache License
@Override @Nullable//from w w w .j a v a 2 s . c o m public RunnerAndConfigurationSettings createConfigurationByLocation(final @NotNull Location location) { // if not in psi file final PsiElement locationElement = location.getPsiElement(); final RFile containingFile = RubyPsiUtil.getRFile(locationElement); final OpenFileDescriptor openedFile = location.getOpenFileDescriptor(); if (containingFile == null || openedFile == null) { // if in psi directory if (locationElement instanceof PsiDirectory) { return createRunAllUnitTestsInFolderConf((PsiDirectory) locationElement); } return null; } final Project project = location.getProject(); final VirtualFile file = openedFile.getFile(); if (!RubyVirtualFileScanner.isRubyFile(file)) { return null; } // Should we create unit test configuration FileSemantic fileSemantic = FileSemantic.RUBY_SCRIPT; // Unit test configuration type TestType testType = null; // Configuration name String name = file.getNameWithoutExtension(); String className = null; String methodName = null; // analyze selected element final RPsiElement rPsiElement = RubyPsiUtil.getCoveringRPsiElement(locationElement); if (rPsiElement != null) { final PsiFile psiFile = rPsiElement.getContainingFile(); if (psiFile != null && RSpecUtil.isRSpecTestFile(psiFile.getVirtualFile())) { //if file is RSpec test file we should suggest to run it with rspec, //even if default test frame work is test_unit return null; } final RContainer currentContainer = (rPsiElement instanceof RContainer) ? (RContainer) rPsiElement : rPsiElement.getParentContainer(); //In Ruby Class if (currentContainer instanceof RClass) { // "currentContainer" maybe nested class so we should // find the upper class contained him final RClass upperClass = RubyPsiUtil.getContainingUpperRClass(currentContainer); final Ref<FileSymbol> fSWrapper = new Ref<FileSymbol>(); fileSemantic = (upperClass != null && RTestUnitUtil.isClassUnitTestCase(upperClass, fSWrapper)) ? FileSemantic.TEST_UNIT_TEST : FileSemantic.RUBY_SCRIPT; if (fileSemantic == FileSemantic.TEST_UNIT_TEST) { name = className = RClassPresentationUtil.getRuntimeQualifiedNameInRubyTestMode(upperClass, fSWrapper); testType = calculateTestTypeForClass(upperClass); if (testType == null) { return null; } } //In Ruby Method } else if (currentContainer instanceof RMethod) { final RClass upperClass = RubyPsiUtil.getContainingUpperRClass(currentContainer); final Ref<FileSymbol> fSWrapper = new Ref<FileSymbol>(); fileSemantic = (upperClass != null && RTestUnitUtil.isClassUnitTestCase(upperClass, fSWrapper)) ? FileSemantic.TEST_UNIT_TEST : FileSemantic.RUBY_SCRIPT; methodName = currentContainer.getName(); if (fileSemantic == FileSemantic.TEST_UNIT_TEST) { className = RClassPresentationUtil.getRuntimeQualifiedNameInRubyTestMode(upperClass, fSWrapper); // Test Method is TestCase method which name starts with prefix "test" if (upperClass == currentContainer.getParentContainer() && RTestUnitUtil.hasValidTestNameAndNotSingleton((RVirtualMethod) currentContainer)) { testType = AbstractRubyRunConfiguration.TestType.TEST_METHOD; name = methodName; } else { //Create configuration for class name = className; testType = calculateTestTypeForClass(upperClass); if (testType == null) { return null; } } } //In Ruby File } else if (currentContainer instanceof RFile) { fileSemantic = (RTestUnitUtil.checkForAnotherTestCases(null, (RFile) currentContainer)) ? FileSemantic.TEST_UNIT_TEST : FileSemantic.RUBY_SCRIPT; testType = AbstractRubyRunConfiguration.TestType.TEST_SCRIPT; } } // create corresponding configuration final RubyRunConfigurationFactory factory; switch (fileSemantic) { case TEST_UNIT_TEST: factory = myUnitTestsFactory; break; case RUBY_SCRIPT: factory = myAppFactory; break; default: factory = null; } final RunnerAndConfigurationSettings settings = RunManager.getInstance(project).createRunConfiguration(name, factory); final AbstractRubyRunConfiguration templateConfiguration = (AbstractRubyRunConfiguration) settings .getConfiguration(); // setupFileCache not default configuration settings // module final Module module = RubyRunConfigurationUtil.getCorrespondingModule(project, file, templateConfiguration); if (module == null) { //TODO module == null => choose first module's some sdk! return null; } //ignores template configuration's defaults templateConfiguration.setModule(module); //keeps template configuration's defaults if (TextUtil.isEmptyOrWhitespaces(templateConfiguration.getWorkingDirectory())) { // sets working dir final VirtualFile parentDir = file.getParent(); final String dir = parentDir != null ? parentDir.getPath() : RailsFacetUtil.getRailsAppHomeDirPath(module); templateConfiguration.setWorkingDirectory(dir); } //specific settings switch (fileSemantic) { case RUBY_SCRIPT: //settings for ruby scripts initScriptConfiguration(file, templateConfiguration); break; case TEST_UNIT_TEST: // settings for unit tests initUnitTestConfiguration(file, testType, className, methodName, templateConfiguration); break; } return settings; }
From source file:org.jetbrains.plugins.ruby.ruby.run.filters.OpenIOFileHyperlinkInfo.java
License:Apache License
@Override public void navigate(final Project project) { ApplicationManager.getApplication().runReadAction(new Runnable() { @Override/*from w w w. j a va 2 s. c om*/ public void run() { final OpenFileDescriptor fileDesc = getDescriptor(); if (fileDesc == null) { return; } if (fileDesc.getFile().isValid()) { FileEditorManager.getInstance(project).openTextEditor(fileDesc, true); } } }); }
From source file:org.napile.idea.thermit.config.execution.TreeView.java
License:Apache License
@Nullable public Object getData(String dataId) { if (PlatformDataKeys.NAVIGATABLE.is(dataId)) { MessageNode item = getSelectedItem(); if (item == null) return null; if (isValid(item.getFile())) { return new OpenFileDescriptor(myProject, item.getFile(), item.getOffset()); }/*w w w. ja va 2s . com*/ if (item.getType() == AntBuildMessageView.MessageType.TARGET) { final OpenFileDescriptor descriptor = getDescriptorForTargetNode(item); if (descriptor != null && isValid(descriptor.getFile())) { return descriptor; } } if (item.getType() == AntBuildMessageView.MessageType.TASK) { final OpenFileDescriptor descriptor = getDescriptorForTaskNode(item); if (descriptor != null && isValid(descriptor.getFile())) { return descriptor; } } } return null; }
From source file:org.napile.idea.thermit.config.explorer.AntExplorer.java
License:Apache License
@Nullable public Object getData(@NonNls String dataId) { if (PlatformDataKeys.NAVIGATABLE.is(dataId)) { final AntBuildFile buildFile = getCurrentBuildFile(); if (buildFile == null) { return null; }/*from w ww . ja va2 s.c om*/ 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.HELP_ID.is(dataId)) { return HelpID.ANT; } else if (PlatformDataKeys.TREE_EXPANDER.is(dataId)) { return myProject != null ? myTreeExpander : null; } else if (PlatformDataKeys.VIRTUAL_FILE_ARRAY.is(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); }