/** * Searches for directory or file using {@link PsiManager}. * * @param manager {@link PsiManager} instance * @param file working file * @return Psi item */ @Nullable private PsiFileSystemItem getPsiFileSystemItem(@NotNull PsiManager manager, @NotNull VirtualFile file) { if (!file.isValid()) { return null; } return file.isDirectory() ? manager.findDirectory(file) : manager.findFile(file); } }
/** * Returns the directory containing the file. * * @return the containing directory, or null if the file exists only in memory. */ @Override public PsiDirectory getContainingDirectory() { VirtualFile parentFile = getVirtualFile().getParent(); PsiDirectory containingDirectory = null; if (parentFile != null) { containingDirectory = getManager().findDirectory(parentFile); } return containingDirectory; }
private void doTestInEmptyDirectory(@NotNull String directoryName, @NotNull String newFileName, @NotNull String expectedPackage, @NotNull String expectedPackageWithTestSuffix) { try { PsiDirectory dir = myFixture.getPsiManager().findDirectory(myFixture.getTempDirFixture().findOrCreateDir(directoryName)); assertNotNull(dir); doTest(dir, newFileName, expectedPackage, expectedPackageWithTestSuffix); } catch (IOException e) { throw new RuntimeException(e); } }
/** * Gets Ignore file for given {@link Project} and root {@link PsiDirectory}. * If file is missing - creates new one. * * @param project current project * @param fileType current ignore file type * @param directory root directory * @param createIfMissing create new file if missing * @return Ignore file */ @Nullable public static PsiFile getIgnoreFile(@NotNull Project project, @NotNull IgnoreFileType fileType, @Nullable PsiDirectory directory, boolean createIfMissing) { if (directory == null) { directory = PsiManager.getInstance(project).findDirectory(project.getBaseDir()); } assert directory != null; String filename = fileType.getIgnoreLanguage().getFilename(); PsiFile file = directory.findFile(filename); VirtualFile virtualFile = file == null ? directory.getVirtualFile().findChild(filename) : file.getVirtualFile(); if (file == null && virtualFile == null && createIfMissing) { try { file = new CreateFileCommandAction(project, directory, fileType).execute(); } catch (Throwable throwable) { throwable.printStackTrace(); } } return file; }
@Override public PsiElement getDocumentationElementForLink(PsiManager psiManager, String link, PsiElement context) { if (context != null && !DumbService.isDumb(psiManager.getProject())) { // it's important to ask module on file, otherwise module won't be found for elements in libraries files [zolotov] Module module = ModuleUtilCore.findModuleForPsiElement(context.getContainingFile()); int hash = link.indexOf('#'); String importPath = hash >= 0 ? link.substring(0, hash) : link; Project project = psiManager.getProject(); VirtualFile directory = GoPackageUtil.findByImportPath(importPath, project, module); PsiDirectory psiDirectory = directory != null ? psiManager.findDirectory(directory) : null; String anchor = hash >= 0 ? link.substring(Math.min(hash + 1, link.length())) : null; if (StringUtil.isNotEmpty(anchor)) { GlobalSearchScope scope = psiDirectory != null ? GoPackageUtil.packageScope(psiDirectory, null) : GlobalSearchScope.projectScope(project); IdFilter idFilter = GoIdFilter.getFilesFilter(scope); GoNamedElement element = ContainerUtil.getFirstItem(StubIndex.getElements(GoAllPublicNamesIndex.ALL_PUBLIC_NAMES, anchor, project, scope, idFilter, GoNamedElement.class)); if (element != null) { return element; } return ContainerUtil.getFirstItem(StubIndex.getElements(GoAllPrivateNamesIndex.ALL_PRIVATE_NAMES, anchor, project, scope, idFilter, GoNamedElement.class)); } else { return psiDirectory; } } return super.getDocumentationElementForLink(psiManager, link, context); }
PsiDirectory directory = PsiManager.getInstance(project).findDirectory(aPackage); if (directory == null) { continue; String organizationName = "ballerina"; for (VirtualFile aPackage : packages) { PsiDirectory directory = PsiManager.getInstance(project).findDirectory(aPackage); if (directory == null) { continue; packages = BallerinaPathModificationTracker.getPackagesFromOrganization(organizationName); for (VirtualFile aPackage : packages) { PsiDirectory directory = PsiManager.getInstance(project).findDirectory(aPackage); if (directory == null) { continue;
private void doInspectionTest(@NotNull InspectionProfileEntry tool, long expected) { VirtualFile sourceDir = installTestData("docker"); if (sourceDir == null) return; //noinspection ConstantConditions AnalysisScope scope = new AnalysisScope(getPsiManager().findDirectory(sourceDir)); scope.invalidate(); InspectionManagerEx inspectionManager = (InspectionManagerEx)InspectionManager.getInstance(getProject()); InspectionToolWrapper wrapper = InspectionToolRegistrar.wrapTool(tool); GlobalInspectionContextForTests globalContext = CodeInsightTestFixtureImpl.createGlobalContextForTool(scope, getProject(), inspectionManager, wrapper); PlatformTestUtil.startPerformanceTest(getTestName(true), (int)expected, () -> InspectionTestUtil.runTool(wrapper, scope, globalContext)).cpuBound().usesAllCPUCores().assertTiming(); InspectionTestUtil.compareToolResults(globalContext, wrapper, false, new File(getTestDataPath(), wrapper.getShortName()).getPath()); }
panel.setText(IgnoreBundle.message("daemon.missingGitignore")); panel.createActionLabel(IgnoreBundle.message("daemon.missingGitignore.create"), () -> { PsiDirectory directory = PsiManager.getInstance(project).findDirectory(project.getBaseDir()); if (directory != null) { try {
case PACKAGE: VirtualFile packageDir = GoPackageUtil.findByImportPath(((GoTestRunConfiguration)configuration).getPackage(), project, module); PsiDirectory psiDirectory = packageDir != null ? PsiManager.getInstance(project).findDirectory(packageDir) : null; if (psiDirectory != null) { return GoPackageUtil.packageScope(psiDirectory, null);
directory = PsiManager.getInstance(project).findDirectory(fixedDirectory); } else { directory = view.getOrChooseDirectory();
final PsiDirectory dir = instance.findDirectory(targetDir); if (dir != null) { dirs.add(dir);
@Nullable public static VirtualFile createFile(@NotNull Project project, @NotNull FileType fileType, @Nullable VirtualFile root, @NotNull String fileNameWithPath, @Nullable String content) { if(root == null) { return null; } String[] filenameSplit = fileNameWithPath.split("/"); String pathString = StringUtils.join(Arrays.copyOf(filenameSplit, filenameSplit.length - 1), "/"); VirtualFile twigDirectory = VfsUtil.findRelativeFile(root, filenameSplit); if(twigDirectory != null) { return null; } VirtualFile targetDir; try { targetDir = VfsUtil.createDirectoryIfMissing(root, pathString); } catch (IOException ignored) { return null; } PsiFileFactory factory = PsiFileFactory.getInstance(project); final PsiFile file = factory.createFileFromText(filenameSplit[filenameSplit.length - 1], fileType, content != null ? content : ""); CodeStyleManager.getInstance(project).reformat(file); PsiDirectory directory = PsiManager.getInstance(project).findDirectory(targetDir); if(directory == null) { return null; } PsiElement add = directory.add(file); if(add instanceof PsiFile) { return ((PsiFile) add).getVirtualFile(); } return null; }
.map(virtualFile -> PsiManager.getInstance(project).findDirectory(virtualFile)) .filter(Objects::nonNull) .collect(Collectors.toSet());
@Nullable @Override public PsiElement[] getGotoDeclarationTargets(PsiElement psiElement, int i, Editor editor) { if(!Symfony2ProjectComponent.isEnabled(psiElement)) { return null; } String[] fileExtensionFilterIfValidTag = findValidAssetFilter(psiElement); if (fileExtensionFilterIfValidTag == null) { return null; } Collection<PsiElement> psiElements = new HashSet<>(); for (VirtualFile virtualFile : TwigUtil.resolveAssetsFiles(psiElement.getProject(), psiElement.getText(), fileExtensionFilterIfValidTag)) { PsiElement target; if(virtualFile.isDirectory()) { target = PsiManager.getInstance(psiElement.getProject()).findDirectory(virtualFile); } else { target = PsiManager.getInstance(psiElement.getProject()).findFile(virtualFile); } if(target != null) { psiElements.add(target); } } return psiElements.toArray(new PsiElement[psiElements.size()]); }
@NotNull @Override public Collection<PsiFileSystemItem> getRoots(@NotNull Module module) { Collection<PsiFileSystemItem> result = new ArrayList<>(); PsiManager psiManager = PsiManager.getInstance(module.getProject()); for (VirtualFile root : ManagingFS.getInstance().getLocalRoots()) { PsiDirectory directory = psiManager.findDirectory(root); if (directory != null) { result.add(directory); } } return result; }
@Nullable public static PsiElement createFromTemplate(@NotNull Project project, @NotNull VirtualFile rootDir, @NotNull String templateName, @NotNull String fileName, @NotNull Properties properties) throws Exception { rootDir.refresh(false, false); PsiDirectory directory = PsiManager.getInstance(project).findDirectory(rootDir); final Properties defaultProperties = FileTemplateManager.getInstance(project).getDefaultProperties(); defaultProperties.putAll(properties); if (directory != null) { return createFromTemplate(project, templateName, fileName, directory, defaultProperties); } return null; }
@NotNull public Collection<PsiFileSystemItem> getRoots(@Nullable final Module module, ProtoPsiFileRoot psiFileRoot) { if (module == null) { return Collections.emptyList(); } Set<PsiFileSystemItem> result = ContainerUtil.newLinkedHashSet(); PsiManager psiManager = PsiManager.getInstance(module.getProject()); for (SourceRootsProvider sourceRootsProvider : sourceRootsProviders) { VirtualFile[] sourceRoots = sourceRootsProvider.getSourceRoots(module, psiFileRoot); for (VirtualFile root : sourceRoots) { if (root != null) { final PsiDirectory directory = psiManager.findDirectory(root); if (directory != null) { result.add(directory); } } } } return result; }
private void handleChooseNewFolder(Project project, Editor editor, PsiClass clazz) { UiComponentFacade uiComponentFacade = UiComponentFacade.getInstance(project); VirtualFile baseDir = project.getBaseDir(); VirtualFile vf = uiComponentFacade.showSingleFolderSelectionDialog("Select target folder", baseDir, baseDir); if (null != vf) { processGenerate(editor, clazz, PsiManager.getInstance(project).findDirectory(vf)); } }
@Test public void testInvokeDialog() throws IOException { ActionManager actionManager = ActionManager.getInstance(); final NewBashFileAction action = (NewBashFileAction) actionManager.getAction("Bash.NewBashScript"); VirtualFile directoryVirtualFile = myFixture.getTempDirFixture().findOrCreateDir(""); final PsiDirectory directory = myFixture.getPsiManager().findDirectory(directoryVirtualFile); try { action.invokeDialog(directory.getProject(), directory); Assert.fail("dialog wasn't invoked"); } catch (Throwable e) { //the dialog invocation is raised as an exception in test mode Assert.assertTrue(e.getMessage().contains("Create a new Bash file")); } } }
private void moveFile(String moveTargetDir, PsiFile sourceFile) { final VirtualFile dir = myFixture.findFileInTempDir(moveTargetDir); assert dir != null : "Directory " + moveTargetDir + " not found"; assert dir.isDirectory() : moveTargetDir + " is not a directory"; final PsiDirectory psiTargetDir = myFixture.getPsiManager().findDirectory(dir); new MoveFilesOrDirectoriesProcessor( myFixture.getProject(), new PsiElement[]{sourceFile}, psiTargetDir, false, false, null, null ).run(); PsiDocumentManager.getInstance(myFixture.getProject()).commitAllDocuments(); FileDocumentManager.getInstance().saveAllDocuments(); } }