private static Set<FileType> templateDataFileTypeSet(@NotNull VirtualFile virtualFile) { String path = virtualFile.getPath(); int pathLength = path.length(); FileTypeManager fileTypeManager = FileTypeManager.getInstance(); return fileTypeManager .getAssociations(Type.INSTANCE) .stream() .filter(ExtensionFileNameMatcher.class::isInstance) .map(ExtensionFileNameMatcher.class::cast) .map(ExtensionFileNameMatcher::getExtension) .map(extension -> '.' + extension) .filter(path::endsWith) .map(dotExtension -> path.substring(0, pathLength - dotExtension.length())) .map(fileTypeManager::getFileTypeByFileName) .collect(Collectors.toSet()); }
private void createLazyObjects() { myLazyMatchers = AtomicNotNullLazyValue.createValue(() -> { List<FileNameMatcher> result = new ArrayList<>(); FileTypeManager fileTypeManager = FileTypeManager.getInstance(); for (FileType fileType : fileTypeManager.getRegisteredFileTypes()) { if (fileType instanceof LanguageFileType) { for (FileNameMatcher matcher : fileTypeManager.getAssociations(fileType)) { if (substitutedExtensions.contains(matcher.getPresentableString())) { result.add(matcher); } } } } return result; }); }
private void createLazyObjects() { myLazyMatchers = AtomicNotNullLazyValue.createValue(() -> { List<FileNameMatcher> result = new ArrayList<>(); FileTypeManager fileTypeManager = FileTypeManager.getInstance(); for (FileType fileType : fileTypeManager.getRegisteredFileTypes()) { if (fileType instanceof LanguageFileType) { for (FileNameMatcher matcher : fileTypeManager.getAssociations(fileType)) { if (substitutedExtensions.contains(matcher.getPresentableString())) { result.add(matcher); } } } } return result; }); myLazyPsiDirsRoots = AtomicNotNullLazyValue.createValue(() -> { Collection<PsiFileSystemItem> result = new ArrayDeque<>(); PsiManager psiManager = PsiManager.getInstance(myProject); for (VirtualFile virtualFile : getTemplateRoots()) { PsiDirectory directory = psiManager.findDirectory(virtualFile); if (directory != null) { result.add(directory); } } return result; }); }
@Override public void run(AnActionButton anActionButton) { FileTypeManager fileTypeManager = FileTypeManager.getInstance(); final List<String> currentItems = substitutedExtensionsModel.getItems(); List<FileNameMatcher> possibleItems = new ArrayList<>(); List<Icon> itemsIcons = new ArrayList<>(); for (FileType fileType : fileTypeManager.getRegisteredFileTypes()) { if (fileType instanceof LanguageFileType) { for (FileNameMatcher matcher : fileTypeManager.getAssociations(fileType)) { if (matcher instanceof ExtensionFileNameMatcher) { String presentableString = matcher.getPresentableString(); if (!currentItems.contains(presentableString)) { possibleItems.add(matcher); itemsIcons.add(fileType.getIcon()); } } } } } BaseListPopupStep<FileNameMatcher> fileNameMatcherBaseListPopupStep = new BaseListPopupStep<FileNameMatcher>("Select Extension", possibleItems, itemsIcons) { @Override public PopupStep onChosen(FileNameMatcher selectedValue, boolean finalChoice) { substitutedExtensionsModel.add(selectedValue.getPresentableString()); return super.onChosen(selectedValue, finalChoice); } }; JBPopupFactory.getInstance().createListPopup(fileNameMatcherBaseListPopupStep).show(anActionButton.getPreferredPopupPoint()); } })