void (@NotNull TextFieldWithBrowseButton field, final @NotNull Project project) { FileChooserDescriptor descriptor = new FileChooserDescriptor(true, false, false, false, false, false) { @Override public boolean isFileSelectable(@Nullable VirtualFile file) { if (file == null) return false; return WebBrowserXmlService.getInstance().isHtmlFile(file) || virtualFileToUrl(file, project) != null; } }; descriptor.setTitle(IdeBundle.message("javascript.debugger.settings.choose.file.title")); descriptor.setDescription(IdeBundle.message("javascript.debugger.settings.choose.file.subtitle")); descriptor.setRoots(ProjectRootManager.getInstance(project).getContentRoots()); field.addBrowseFolderListener(new TextBrowseFolderListener(descriptor, project) { @Override protected @NotNull String chosenFileToResultingText(@NotNull VirtualFile chosenFile) { if (chosenFile.isDirectory()) { return chosenFile.getPath(); } Url url = virtualFileToUrl(chosenFile, project); return url == null ? chosenFile.getUrl() : url.toDecodedForm(); } }); }