mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
[project] replacing FileChooserDescriptor#isFileVisible with file- and/or extension-based filters (IJPL-150176)
GitOrigin-RevId: 7176005f3d39d2f2e928c2e5f804de173e5d83f4
This commit is contained in:
committed by
intellij-monorepo-bot
parent
410f7661a6
commit
69479687e5
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.compiler.options;
|
||||
|
||||
import com.intellij.ide.util.ElementsChooser;
|
||||
@@ -14,7 +14,6 @@ import com.intellij.openapi.options.ConfigurationException;
|
||||
import com.intellij.openapi.options.SearchableConfigurable;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.ModuleRootManager;
|
||||
import com.intellij.openapi.roots.ProjectFileIndex;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.ui.IdeBorderFactory;
|
||||
@@ -56,13 +55,9 @@ public class ValidationConfigurable implements SearchableConfigurable, Configura
|
||||
}
|
||||
|
||||
private static ExcludedEntriesConfigurable createExcludedConfigurable(@NotNull Project project) {
|
||||
ProjectFileIndex index = project.isDefault() ? null : ProjectRootManager.getInstance(project).getFileIndex();
|
||||
final FileChooserDescriptor descriptor = new FileChooserDescriptor(true, true, false, false, false, true) {
|
||||
@Override
|
||||
public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) {
|
||||
return super.isFileVisible(file, showHiddenFiles) && (index == null || !index.isExcluded(file));
|
||||
}
|
||||
};
|
||||
var index = project.isDefault() ? null : ProjectRootManager.getInstance(project).getFileIndex();
|
||||
var descriptor = new FileChooserDescriptor(true, true, false, false, false, true)
|
||||
.withFileFilter(file -> index == null || !index.isExcluded(file));
|
||||
|
||||
List<VirtualFile> allContentRoots = new ArrayList<>();
|
||||
for (final Module module: ModuleManager.getInstance(project).getModules()) {
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.intellij.packaging.impl.ui.properties;
|
||||
|
||||
import com.intellij.openapi.compiler.JavaCompilerBundle;
|
||||
import com.intellij.openapi.fileChooser.FileChooser;
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
@@ -86,15 +86,10 @@ public abstract class ElementWithManifestPropertiesPanel<E extends CompositeElem
|
||||
}
|
||||
|
||||
private void chooseManifest() {
|
||||
final FileChooserDescriptor descriptor = new FileChooserDescriptor(true, false, false, false, false, false) {
|
||||
@Override
|
||||
public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) {
|
||||
return super.isFileVisible(file, showHiddenFiles) && (file.isDirectory() ||
|
||||
file.getName().equalsIgnoreCase(ManifestFileUtil.MANIFEST_FILE_NAME));
|
||||
}
|
||||
};
|
||||
descriptor.setTitle(JavaCompilerBundle.message("specify.path.to.manifest.mf.file"));
|
||||
final VirtualFile file = FileChooser.chooseFile(descriptor, myContext.getProject(), null);
|
||||
var descriptor = FileChooserDescriptorFactory.createSingleFileDescriptor("MF")
|
||||
.withFileFilter(file -> file.getName().equalsIgnoreCase(ManifestFileUtil.MANIFEST_FILE_NAME))
|
||||
.withTitle(JavaCompilerBundle.message("specify.path.to.manifest.mf.file"));
|
||||
var file = FileChooser.chooseFile(descriptor, myContext.getProject(), null);
|
||||
if (file == null) return;
|
||||
|
||||
ManifestFileUtil.addManifestFileToLayout(file.getPath(), myContext, myElement);
|
||||
|
||||
@@ -8,7 +8,6 @@ import com.intellij.debugger.engine.JVMNameUtil;
|
||||
import com.intellij.debugger.jdi.DecompiledLocalVariable;
|
||||
import com.intellij.debugger.ui.JavaDebuggerSupport;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.highlighter.ArchiveFileType;
|
||||
import com.intellij.ide.ui.laf.darcula.DarculaUIUtil;
|
||||
import com.intellij.openapi.actionSystem.ActionUpdateThread;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
@@ -18,8 +17,7 @@ import com.intellij.openapi.fileChooser.FileChooser;
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
|
||||
import com.intellij.openapi.fileChooser.FileChooserFactory;
|
||||
import com.intellij.openapi.fileChooser.FileSaverDescriptor;
|
||||
import com.intellij.openapi.fileTypes.FileTypeRegistry;
|
||||
import com.intellij.openapi.fileTypes.StdFileTypes;
|
||||
import com.intellij.openapi.fileTypes.FileTypeManager;
|
||||
import com.intellij.openapi.options.Configurable.NoScroll;
|
||||
import com.intellij.openapi.options.ConfigurationException;
|
||||
import com.intellij.openapi.options.SearchableConfigurable;
|
||||
@@ -232,20 +230,10 @@ public final class CaptureConfigurable implements SearchableConfigurable, NoScro
|
||||
AllIcons.Actions.Install) {
|
||||
@Override
|
||||
public void actionPerformed(@NotNull final AnActionEvent e) {
|
||||
FileChooserDescriptor descriptor = new FileChooserDescriptor(true, false, true, false, true, true) {
|
||||
@Override
|
||||
public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) {
|
||||
return super.isFileVisible(file, showHiddenFiles) &&
|
||||
(file.isDirectory() || "xml".equals(file.getExtension()) || FileTypeRegistry.getInstance().isFileOfType(file, ArchiveFileType.INSTANCE));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFileSelectable(@Nullable VirtualFile file) {
|
||||
return file != null && FileTypeRegistry.getInstance().isFileOfType(file, StdFileTypes.XML);
|
||||
}
|
||||
};
|
||||
descriptor.setDescription(JavaDebuggerBundle.message("please.select.a.file.to.import"));
|
||||
descriptor.setTitle(JavaDebuggerBundle.message("import.capture.points"));
|
||||
var descriptor = new FileChooserDescriptor(true, false, true, false, true, true)
|
||||
.withExtensionFilter(FileTypeManager.getInstance().getStdFileType("XML"))
|
||||
.withTitle(JavaDebuggerBundle.message("import.capture.points"))
|
||||
.withDescription(JavaDebuggerBundle.message("please.select.a.file.to.import"));
|
||||
|
||||
VirtualFile[] files = FileChooser.chooseFiles(descriptor, e.getProject(), null);
|
||||
if (ArrayUtil.isEmpty(files)) return;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.diff;
|
||||
|
||||
import com.intellij.diff.util.DiffUtil;
|
||||
@@ -177,12 +177,7 @@ public class VirtualFileDiffElement extends DiffElement<VirtualFile> {
|
||||
}
|
||||
|
||||
protected FileChooserDescriptor getChooserDescriptor() {
|
||||
return new FileChooserDescriptor(true, true, true, true, false, false) {
|
||||
@Override
|
||||
public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) {
|
||||
return file.isDirectory() || file.getFileType() instanceof ArchiveFileType;
|
||||
}
|
||||
};
|
||||
return new FileChooserDescriptor(true, true, true, true, false, false).withExtensionFilter(ArchiveFileType.INSTANCE);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -461,18 +461,11 @@ public final class RunConfigurationStorageUi {
|
||||
}
|
||||
|
||||
private @NotNull ComboBox<String> createPathComboBox(@NotNull Project project, @NotNull Disposable uiDisposable) {
|
||||
ComboBox<String> comboBox = new ComboBox<>(JBUI.scale(500));
|
||||
var comboBox = new ComboBox<String>(JBUI.scale(500));
|
||||
comboBox.setEditable(true);
|
||||
|
||||
// chooseFiles is set to true to be able to select project.ipr file in IPR-based projects. Other files are not visible/selectable in the chooser
|
||||
FileChooserDescriptor descriptor = new FileChooserDescriptor(true, true, false, false, false, false) {
|
||||
@Override
|
||||
public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) {
|
||||
// dotIdeaStoragePath may be a path to the project.ipr file in IPR-based projects
|
||||
if (file.getPath().equals(myDotIdeaStoragePath)) return true;
|
||||
return file.isDirectory() && super.isFileVisible(file, showHiddenFiles);
|
||||
}
|
||||
|
||||
// `chooseFiles` is set to `true` to be able to select 'project.ipr' file in IPR-based projects; other files are not selectable
|
||||
var descriptor = new FileChooserDescriptor(true, true, false, false, false, false) {
|
||||
@Override
|
||||
public boolean isFileSelectable(@Nullable VirtualFile file) {
|
||||
if (file == null) return false;
|
||||
@@ -485,7 +478,7 @@ public final class RunConfigurationStorageUi {
|
||||
}
|
||||
};
|
||||
|
||||
Runnable selectFolderAction = new BrowseFolderRunnable<>(project, descriptor, comboBox, TextComponentAccessor.STRING_COMBOBOX_WHOLE_TEXT);
|
||||
var selectFolderAction = new BrowseFolderRunnable<>(project, descriptor, comboBox, TextComponentAccessor.STRING_COMBOBOX_WHOLE_TEXT);
|
||||
comboBox.initBrowsableEditor(selectFolderAction, uiDisposable);
|
||||
return comboBox;
|
||||
}
|
||||
|
||||
@@ -1476,7 +1476,7 @@ c:com.intellij.openapi.fileChooser.FileChooserDescriptor
|
||||
- isChooseJarsAsFiles():Z
|
||||
- isChooseMultiple():Z
|
||||
- isFileSelectable(com.intellij.openapi.vfs.VirtualFile):Z
|
||||
- isFileVisible(com.intellij.openapi.vfs.VirtualFile,Z):Z
|
||||
- F:isFileVisible(com.intellij.openapi.vfs.VirtualFile,Z):Z
|
||||
- isForcedToUseIdeaFileChooser():Z
|
||||
- isHideIgnored():Z
|
||||
- isShowFileSystemRoots():Z
|
||||
@@ -1504,6 +1504,7 @@ c:com.intellij.openapi.fileChooser.FileChooserDescriptor
|
||||
- withShowHiddenFiles(Z):com.intellij.openapi.fileChooser.FileChooserDescriptor
|
||||
- withTitle(java.lang.String):com.intellij.openapi.fileChooser.FileChooserDescriptor
|
||||
- withTreeRootVisible(Z):com.intellij.openapi.fileChooser.FileChooserDescriptor
|
||||
- withoutExtensionFilter():com.intellij.openapi.fileChooser.FileChooserDescriptor
|
||||
f:com.intellij.openapi.fileChooser.FileChooserDescriptorFactory
|
||||
- s:createAllButJarContentsDescriptor():com.intellij.openapi.fileChooser.FileChooserDescriptor
|
||||
- s:createMultipleFilesNoJarsDescriptor():com.intellij.openapi.fileChooser.FileChooserDescriptor
|
||||
|
||||
@@ -48,7 +48,8 @@ public class FileChooserDescriptor implements Cloneable {
|
||||
private boolean myTreeRootVisible = false;
|
||||
private boolean myShowHiddenFiles = false;
|
||||
private @Nullable Pair<@Nls String, List<String>> myExtensionFilter = null;
|
||||
private Predicate<? super VirtualFile> myFileFilter = null;
|
||||
private FileType @Nullable [] myFileTypeFilter = null;
|
||||
private @Nullable Predicate<? super VirtualFile> myFileFilter = null;
|
||||
private boolean myForcedToUseIdeaFileChooser = false;
|
||||
|
||||
private final Map<String, Object> myUserData = new HashMap<>();
|
||||
@@ -89,6 +90,7 @@ public class FileChooserDescriptor implements Cloneable {
|
||||
myTreeRootVisible = d.isTreeRootVisible();
|
||||
myShowHiddenFiles = d.isShowHiddenFiles();
|
||||
myExtensionFilter = d.myExtensionFilter;
|
||||
myFileTypeFilter = d.myFileTypeFilter;
|
||||
myFileFilter = d.myFileFilter;
|
||||
myForcedToUseIdeaFileChooser = false;
|
||||
myUserData.putAll(d.myUserData);
|
||||
@@ -241,7 +243,7 @@ public class FileChooserDescriptor implements Cloneable {
|
||||
.map(matcher -> matcher instanceof ExtensionFileNameMatcher em ? em.getExtension() : null)
|
||||
.filter(Objects::nonNull)
|
||||
.toArray(String[]::new);
|
||||
myFileFilter = file -> ContainerUtil.exists(types, type -> FileTypeRegistry.getInstance().isFileOfType(file, type));
|
||||
myFileTypeFilter = types;
|
||||
return withExtensionFilter(label, extensions);
|
||||
}
|
||||
|
||||
@@ -266,12 +268,19 @@ public class FileChooserDescriptor implements Cloneable {
|
||||
return this;
|
||||
}
|
||||
|
||||
public FileChooserDescriptor withoutExtensionFilter() {
|
||||
myExtensionFilter = null;
|
||||
myFileTypeFilter = null;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Defines whether a file is visible in the tree.
|
||||
*
|
||||
* @deprecated ignored by native file choosers; use {@link #withFileFilter} and {@link #withExtensionFilter} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@ApiStatus.NonExtendable
|
||||
public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) {
|
||||
if (file.is(VFileProperty.SYMLINK) && file.getCanonicalPath() == null) {
|
||||
return false;
|
||||
@@ -289,6 +298,9 @@ public class FileChooserDescriptor implements Cloneable {
|
||||
if (myExtensionFilter != null && !matchesExtFilter(file, myExtensionFilter.second)) {
|
||||
return false;
|
||||
}
|
||||
if (myFileTypeFilter != null && !matchesTypeFilter(file, myFileTypeFilter)) {
|
||||
return false;
|
||||
}
|
||||
if (myFileFilter != null && !myFileFilter.test(file)) {
|
||||
return false;
|
||||
}
|
||||
@@ -322,6 +334,9 @@ public class FileChooserDescriptor implements Cloneable {
|
||||
if (myExtensionFilter != null) {
|
||||
return matchesExtFilter(file, myExtensionFilter.second);
|
||||
}
|
||||
if (myFileTypeFilter != null) {
|
||||
return matchesTypeFilter(file, myFileTypeFilter);
|
||||
}
|
||||
if (myFileFilter != null) {
|
||||
return myFileFilter.test(file);
|
||||
}
|
||||
@@ -329,6 +344,14 @@ public class FileChooserDescriptor implements Cloneable {
|
||||
return acceptAsJarFile(file) || acceptAsGeneralFile(file);
|
||||
}
|
||||
|
||||
private static boolean matchesExtFilter(VirtualFile file, List<String> extensions) {
|
||||
return ContainerUtil.exists(extensions, ext -> Strings.endsWithIgnoreCase(file.getName(), '.' + ext));
|
||||
}
|
||||
|
||||
private static boolean matchesTypeFilter(VirtualFile file, FileType[] types) {
|
||||
return ContainerUtil.exists(types, type -> FileTypeRegistry.getInstance().isFileOfType(file, type));
|
||||
}
|
||||
|
||||
/**
|
||||
* Called upon <em>OK</em> action before closing dialog.
|
||||
* Override to customize validation of user input.
|
||||
@@ -425,10 +448,6 @@ public class FileChooserDescriptor implements Cloneable {
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean matchesExtFilter(VirtualFile file, List<String> extensions) {
|
||||
return ContainerUtil.exists(extensions, ext -> Strings.endsWithIgnoreCase(file.getName(), '.' + ext));
|
||||
}
|
||||
|
||||
public <T> void putUserData(@NotNull DataKey<T> key, @Nullable T data) {
|
||||
myUserData.put(key.getName(), data);
|
||||
}
|
||||
|
||||
@@ -2943,7 +2943,6 @@ c:com.intellij.ide.actions.OpenProjectFileChooserDescriptor
|
||||
- <init>(Z,Z):V
|
||||
- getIcon(com.intellij.openapi.vfs.VirtualFile):javax.swing.Icon
|
||||
- isFileSelectable(com.intellij.openapi.vfs.VirtualFile):Z
|
||||
- isFileVisible(com.intellij.openapi.vfs.VirtualFile,Z):Z
|
||||
- s:isProjectFile(com.intellij.openapi.vfs.VirtualFile):Z
|
||||
c:com.intellij.ide.actions.PasteAction
|
||||
- com.intellij.openapi.actionSystem.AnAction
|
||||
|
||||
@@ -17,7 +17,6 @@ import com.intellij.openapi.actionSystem.remoting.ActionRemoteBehaviorSpecificat
|
||||
import com.intellij.openapi.application.EDT
|
||||
import com.intellij.openapi.application.readAction
|
||||
import com.intellij.openapi.fileChooser.FileChooser
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptor
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory
|
||||
import com.intellij.openapi.fileChooser.PathChooserDialog
|
||||
import com.intellij.openapi.fileChooser.impl.FileChooserUtil
|
||||
@@ -72,7 +71,9 @@ open class OpenFileAction : AnAction(), DumbAware, LightEditCompatible, ActionRe
|
||||
override fun actionPerformed(e: AnActionEvent) {
|
||||
val project = e.project
|
||||
val showFiles = project != null || PlatformProjectOpenProcessor.getInstanceIfItExists() != null
|
||||
val descriptor: FileChooserDescriptor = if (showFiles) ProjectOrFileChooserDescriptor() else ProjectOnlyFileChooserDescriptor()
|
||||
val descriptor =
|
||||
if (showFiles) ProjectOrFileChooserDescriptor()
|
||||
else OpenProjectFileChooserDescriptor(true).withTitle(IdeBundle.message("title.open.project"))
|
||||
var toSelect: VirtualFile? = null
|
||||
val defaultProjectDirectory = GeneralLocalSettings.getInstance().defaultProjectDirectory
|
||||
if (defaultProjectDirectory.isNotEmpty()) {
|
||||
@@ -129,13 +130,7 @@ open class OpenFileAction : AnAction(), DumbAware, LightEditCompatible, ActionRe
|
||||
override fun getActionUpdateThread(): ActionUpdateThread = ActionUpdateThread.BGT
|
||||
}
|
||||
|
||||
private class ProjectOnlyFileChooserDescriptor : OpenProjectFileChooserDescriptor(true) {
|
||||
init {
|
||||
title = IdeBundle.message("title.open.project")
|
||||
}
|
||||
}
|
||||
|
||||
// vanilla OpenProjectFileChooserDescriptor only accepts project files; this one is overridden to accept any files
|
||||
// vanilla `OpenProjectFileChooserDescriptor` only accepts project files; this one is overridden to accept any files
|
||||
private class ProjectOrFileChooserDescriptor : OpenProjectFileChooserDescriptor(true) {
|
||||
private val myStandardDescriptor = FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor().withHideIgnored(false)
|
||||
|
||||
@@ -143,11 +138,6 @@ private class ProjectOrFileChooserDescriptor : OpenProjectFileChooserDescriptor(
|
||||
title = IdeBundle.message("title.open.file.or.project")
|
||||
}
|
||||
|
||||
override fun isFileVisible(file: VirtualFile, showHiddenFiles: Boolean): Boolean = when {
|
||||
file.isDirectory -> super.isFileVisible(file, showHiddenFiles)
|
||||
else -> myStandardDescriptor.isFileVisible(file, showHiddenFiles)
|
||||
}
|
||||
|
||||
override fun isFileSelectable(file: VirtualFile?): Boolean = when {
|
||||
file == null -> false
|
||||
file.isDirectory -> SlowOperations.knownIssue("IJPL-162827").use {
|
||||
|
||||
@@ -30,11 +30,6 @@ public class OpenProjectFileChooserDescriptor extends FileChooserDescriptor {
|
||||
setHideIgnored(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) {
|
||||
return super.isFileVisible(file, showHiddenFiles) && (file.isDirectory() || isProjectFile(file));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFileSelectable(@Nullable VirtualFile file) {
|
||||
return file != null && (isProjectDirectory(file) || isProjectFile(file));
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.vcs.log.ui.filter;
|
||||
|
||||
import com.intellij.ide.util.treeView.NodeDescriptor;
|
||||
@@ -134,18 +134,14 @@ public class VcsStructureChooser extends DialogWrapper {
|
||||
myTree.setRootVisible(false);
|
||||
myTree.setExpandableItemsEnabled(false);
|
||||
|
||||
FileChooserDescriptor descriptor = new FileChooserDescriptor(true, true, true, true, false, true) {
|
||||
@Override
|
||||
public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) {
|
||||
if (!super.isFileVisible(file, showHiddenFiles)) return false;
|
||||
if (myRoots.contains(file)) return false;
|
||||
ChangeListManager changeListManager = ChangeListManager.getInstance(myProject);
|
||||
return !changeListManager.isIgnoredFile(file) && !changeListManager.isUnversioned(file);
|
||||
}
|
||||
};
|
||||
descriptor.withRoots(new ArrayList<>(myRoots)).withShowHiddenFiles(true).withHideIgnored(true);
|
||||
MyCheckboxTreeCellRenderer cellRenderer = new MyCheckboxTreeCellRenderer(mySelectionManager, myModulesSet, myProject, myTree, myRoots);
|
||||
FileSystemTreeImpl fileSystemTree = new MyFileSystemTreeImpl(myProject, descriptor, myTree, cellRenderer, myModulesSet);
|
||||
var changeListManager = ChangeListManager.getInstance(myProject);
|
||||
var descriptor = new FileChooserDescriptor(true, true, true, true, false, true)
|
||||
.withFileFilter(file -> !myRoots.contains(file) && !changeListManager.isIgnoredFile(file) && !changeListManager.isUnversioned(file))
|
||||
.withRoots(new ArrayList<>(myRoots))
|
||||
.withShowHiddenFiles(true)
|
||||
.withHideIgnored(true);
|
||||
var cellRenderer = new MyCheckboxTreeCellRenderer(mySelectionManager, myModulesSet, myProject, myTree, myRoots);
|
||||
var fileSystemTree = new MyFileSystemTreeImpl(myProject, descriptor, myTree, cellRenderer, myModulesSet);
|
||||
Disposer.register(myDisposable, fileSystemTree);
|
||||
|
||||
new ClickListener() {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.lang.ant.config.explorer;
|
||||
|
||||
import com.intellij.execution.ExecutionBundle;
|
||||
@@ -28,8 +28,8 @@ import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.fileChooser.FileChooser;
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
|
||||
import com.intellij.openapi.fileEditor.OpenFileDescriptor;
|
||||
import com.intellij.openapi.fileTypes.FileTypeRegistry;
|
||||
import com.intellij.openapi.help.HelpManager;
|
||||
import com.intellij.openapi.keymap.Keymap;
|
||||
import com.intellij.openapi.keymap.KeymapManagerListener;
|
||||
@@ -574,16 +574,7 @@ public final class AntExplorer extends SimpleToolWindowPanel implements Disposab
|
||||
}
|
||||
|
||||
public static FileChooserDescriptor createXmlDescriptor() {
|
||||
return new FileChooserDescriptor(true, false, false, false, false, true){
|
||||
@Override
|
||||
public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) {
|
||||
boolean b = super.isFileVisible(file, showHiddenFiles);
|
||||
if (!file.isDirectory()) {
|
||||
b &= FileTypeRegistry.getInstance().isFileOfType(file, XmlFileType.INSTANCE);
|
||||
}
|
||||
return b;
|
||||
}
|
||||
};
|
||||
return FileChooserDescriptorFactory.createMultipleFilesNoJarsDescriptor().withExtensionFilter(XmlFileType.INSTANCE);
|
||||
}
|
||||
|
||||
private static final class NodeRenderer extends ColoredTreeCellRenderer {
|
||||
@@ -1026,4 +1017,4 @@ public final class AntExplorer extends SimpleToolWindowPanel implements Disposab
|
||||
return VfsUtilCore.toVirtualFileArray(virtualFileList);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.editorconfig.configmanagement.editor
|
||||
|
||||
import com.intellij.codeInsight.daemon.LineMarkerInfo
|
||||
@@ -9,9 +9,8 @@ import com.intellij.openapi.actionSystem.AnAction
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent
|
||||
import com.intellij.openapi.actionSystem.DefaultActionGroup
|
||||
import com.intellij.openapi.editor.markup.GutterIconRenderer
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptor
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory
|
||||
import com.intellij.openapi.fileChooser.FileChooserFactory
|
||||
import com.intellij.openapi.fileChooser.FileElement
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager
|
||||
import com.intellij.openapi.project.DumbAware
|
||||
import com.intellij.openapi.project.DumbAwareAction
|
||||
@@ -83,17 +82,14 @@ class EditorConfigPreviewMarkerProvider : LineMarkerProviderDescriptor(), DumbAw
|
||||
fun getPattern(header: String): String = header.trimStart('[').trimEnd(']')
|
||||
|
||||
fun choosePreviewFile(project: Project, rootDir: VirtualFile, pattern: String): VirtualFile? {
|
||||
val descriptor = object : FileChooserDescriptor(true, false, false, false, false, false) {
|
||||
override fun isFileVisible(file: VirtualFile, showHiddenFiles: Boolean): Boolean =
|
||||
(showHiddenFiles || !FileElement.isFileHidden(file))
|
||||
&& Utils.EDITOR_CONFIG_FILE_NAME != file.name
|
||||
&& file.length <= EditorConfigEditorProvider.MAX_PREVIEW_LENGTH
|
||||
&& matchesPattern(rootDir, pattern, file.path)
|
||||
|| file.isDirectory
|
||||
|
||||
override fun isFileSelectable(file: VirtualFile?): Boolean = file != null && !file.isDirectory
|
||||
}.withRoots(rootDir)
|
||||
descriptor.isForcedToUseIdeaFileChooser = true
|
||||
val descriptor = FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor()
|
||||
.withFileFilter { file ->
|
||||
Utils.EDITOR_CONFIG_FILE_NAME != file.name &&
|
||||
file.length <= EditorConfigEditorProvider.MAX_PREVIEW_LENGTH &&
|
||||
matchesPattern(rootDir, pattern, file.path)
|
||||
}
|
||||
.withRoots(rootDir)
|
||||
.apply { isForcedToUseIdeaFileChooser = true }
|
||||
val fileChooser = FileChooserFactory.getInstance().createFileChooser(descriptor, project, null)
|
||||
val virtualFiles = fileChooser.choose(project, *VirtualFile.EMPTY_ARRAY)
|
||||
return if (virtualFiles.isNotEmpty()) virtualFiles[0] else null
|
||||
@@ -116,4 +112,4 @@ class EditorConfigPreviewMarkerProvider : LineMarkerProviderDescriptor(), DumbAw
|
||||
FileEditorManager.getInstance(project).openFile(editorConfigFile, true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@ import com.intellij.openapi.roots.ProjectRootManager
|
||||
import com.intellij.openapi.ui.DialogPanel
|
||||
import com.intellij.openapi.ui.TextFieldWithBrowseButton
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.ui.dsl.builder.*
|
||||
import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes
|
||||
import org.jetbrains.plugins.groovy.GroovyBundle
|
||||
@@ -93,15 +92,11 @@ class GroovyCompilerConfigurable(private val project: Project) : BoundSearchable
|
||||
private fun createExcludedConfigurable(project: Project): ExcludedEntriesConfigurable {
|
||||
val configuration = config.excludeFromStubGeneration
|
||||
val index = if (project.isDefault) null else ProjectRootManager.getInstance(project).fileIndex
|
||||
val descriptor = object : FileChooserDescriptor(true, true, false, false, false, true) {
|
||||
override fun isFileVisible(file: VirtualFile, showHiddenFiles: Boolean): Boolean {
|
||||
return super.isFileVisible(file, showHiddenFiles) && (index == null || !index.isExcluded(file))
|
||||
}
|
||||
}
|
||||
descriptor.roots = getInstance(project).modules.flatMap { module ->
|
||||
ModuleRootManager.getInstance(module)
|
||||
.getSourceRoots(JavaModuleSourceRootTypes.SOURCES)
|
||||
}
|
||||
val descriptor = FileChooserDescriptor(true, true, false, false, false, true)
|
||||
.withFileFilter { file -> index == null || !index.isExcluded(file) }
|
||||
.withRoots(getInstance(project).modules.flatMap { module ->
|
||||
ModuleRootManager.getInstance(module).getSourceRoots(JavaModuleSourceRootTypes.SOURCES)
|
||||
})
|
||||
return ExcludedEntriesConfigurable(project, descriptor, configuration)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,4 @@
|
||||
/*
|
||||
* Copyright 2000-2012 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.idea.maven.project.actions
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent
|
||||
@@ -20,9 +6,9 @@ import com.intellij.openapi.actionSystem.CommonDataKeys
|
||||
import com.intellij.openapi.application.EDT
|
||||
import com.intellij.openapi.fileChooser.FileChooser
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptor
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory
|
||||
import com.intellij.openapi.ui.Messages
|
||||
import com.intellij.openapi.ui.getPresentablePath
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
@@ -43,15 +29,8 @@ class AddManagedFilesAction : MavenAction() {
|
||||
val project = MavenActionUtil.getProject(e.dataContext) ?: return
|
||||
val manager = MavenProjectsManager.getInstanceIfCreated(project) ?: return
|
||||
|
||||
val singlePomSelection: FileChooserDescriptor = object : FileChooserDescriptor(true, true, false, false, false, false) {
|
||||
override fun isFileSelectable(file: VirtualFile?): Boolean {
|
||||
return super.isFileSelectable(file) && !manager.isManagedFile(file!!)
|
||||
}
|
||||
|
||||
override fun isFileVisible(file: VirtualFile, showHiddenFiles: Boolean): Boolean {
|
||||
return if (!file.isDirectory && !MavenActionUtil.isMavenProjectFile(file)) false else super.isFileVisible(file, showHiddenFiles)
|
||||
}
|
||||
}
|
||||
val singlePomSelection: FileChooserDescriptor = FileChooserDescriptorFactory.createSingleFileOrFolderDescriptor()
|
||||
.withFileFilter { file -> MavenActionUtil.isMavenProjectFile(file) && !manager.isManagedFile(file) }
|
||||
|
||||
val files = withContext(Dispatchers.EDT) {
|
||||
val fileToSelect = e.getData(CommonDataKeys.VIRTUAL_FILE)
|
||||
@@ -79,4 +58,4 @@ class AddManagedFilesAction : MavenAction() {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,6 @@ import com.intellij.ide.util.TreeClassChooserFactory;
|
||||
import com.intellij.openapi.application.ModalityState;
|
||||
import com.intellij.openapi.application.ReadAction;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
|
||||
import com.intellij.openapi.fileTypes.PlainTextLanguage;
|
||||
import com.intellij.openapi.module.Module;
|
||||
@@ -26,7 +25,6 @@ import com.intellij.openapi.ui.LabeledComponent;
|
||||
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.FilenameIndex;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
@@ -414,13 +412,9 @@ public class TestNGConfigurationEditor<T extends TestNGConfiguration> extends Se
|
||||
TextFieldWithBrowseButton textFieldWithBrowseButton = new TextFieldWithBrowseButton();
|
||||
propertiesFile.setComponent(textFieldWithBrowseButton);
|
||||
|
||||
textFieldWithBrowseButton.addBrowseFolderListener(project, new FileChooserDescriptor(true, false, false, false, false, false) {
|
||||
@Override
|
||||
public boolean isFileVisible(VirtualFile virtualFile, boolean showHidden) {
|
||||
if (!showHidden && virtualFile.getName().charAt(0) == '.') return false;
|
||||
return virtualFile.isDirectory() || "properties".equals(virtualFile.getExtension());
|
||||
}
|
||||
}.withTitle(TestngBundle.message("testng.browse.button.title")).withDescription(TestngBundle.message("testng.select.properties.file")));
|
||||
textFieldWithBrowseButton.addBrowseFolderListener(project, FileChooserDescriptorFactory.createSingleFileDescriptor("properties")
|
||||
.withTitle(TestngBundle.message("testng.browse.button.title"))
|
||||
.withDescription(TestngBundle.message("testng.select.properties.file")));
|
||||
|
||||
propertiesTableView = new TableView(propertiesTableModel);
|
||||
|
||||
|
||||
@@ -1,49 +1,28 @@
|
||||
/*
|
||||
* Copyright 2000-2012 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.theoryinpractice.testng.configuration.browser;
|
||||
|
||||
import com.intellij.execution.configuration.BrowseModuleValueActionListener;
|
||||
import com.intellij.ide.IdeCoreBundle;
|
||||
import com.intellij.openapi.fileChooser.FileChooser;
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.theoryinpractice.testng.TestngBundle;
|
||||
|
||||
/**
|
||||
* @author Hani Suleiman
|
||||
*/
|
||||
public class SuiteBrowser extends BrowseModuleValueActionListener
|
||||
{
|
||||
public SuiteBrowser(Project project) {
|
||||
super(project);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String showDialog() {
|
||||
FileChooserDescriptor descriptor = new FileChooserDescriptor(true, false, false, false, false, false) {
|
||||
@Override
|
||||
public boolean isFileVisible(VirtualFile virtualFile, boolean showHidden) {
|
||||
if(!showHidden && virtualFile.getName().charAt(0) == '.') return false;
|
||||
return virtualFile.isDirectory() || "xml".equals(virtualFile.getExtension()) || "yaml".equals(virtualFile.getExtension());
|
||||
}
|
||||
};
|
||||
descriptor.setDescription((TestngBundle.message("testng.suite.browser.select.xml.or.yaml.suite.file")));
|
||||
descriptor.setTitle(TestngBundle.message("testng.suite.browser.select.suite"));
|
||||
VirtualFile file = FileChooser.chooseFile(descriptor, getProject(), null);
|
||||
return file != null ? file.getPath() : null;
|
||||
}
|
||||
public class SuiteBrowser extends BrowseModuleValueActionListener {
|
||||
public SuiteBrowser(Project project) {
|
||||
super(project);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String showDialog() {
|
||||
var descriptor = FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor()
|
||||
.withExtensionFilter(IdeCoreBundle.message("file.chooser.files.label", "XML|YAML"), "xml", "yaml")
|
||||
.withTitle(TestngBundle.message("testng.suite.browser.select.suite"))
|
||||
.withDescription((TestngBundle.message("testng.suite.browser.select.xml.or.yaml.suite.file")));
|
||||
var file = FileChooser.chooseFile(descriptor, getProject(), null);
|
||||
return file != null ? file.getPath() : null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,18 +16,17 @@
|
||||
package org.intellij.lang.xpath.xslt.associations.impl;
|
||||
|
||||
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer;
|
||||
import com.intellij.ide.IdeCoreBundle;
|
||||
import com.intellij.openapi.actionSystem.ActionUpdateThread;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.fileChooser.FileChooser;
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.util.IconUtil;
|
||||
import org.intellij.lang.xpath.xslt.associations.FileAssociationsManager;
|
||||
import org.intellij.plugins.xpathView.XPathBundle;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
class AddAssociationAction extends AnAction {
|
||||
private final FileAssociationsManager myManager;
|
||||
@@ -54,20 +53,15 @@ class AddAssociationAction extends AnAction {
|
||||
}
|
||||
|
||||
protected void addAssociation(final PsiFile psiFile) {
|
||||
|
||||
final VirtualFile virtualFile = psiFile.getVirtualFile();
|
||||
var virtualFile = psiFile.getVirtualFile();
|
||||
assert virtualFile != null;
|
||||
|
||||
final FileChooserDescriptor descriptor = new AnyXMLDescriptor(true) {
|
||||
@Override
|
||||
public boolean isFileSelectable(@Nullable VirtualFile file) {
|
||||
return super.isFileSelectable(file) && !file.equals(virtualFile);
|
||||
}
|
||||
};
|
||||
var descriptor = FileChooserDescriptorFactory.createMultipleFilesNoJarsDescriptor()
|
||||
.withExtensionFilter(IdeCoreBundle.message("file.chooser.files.label", "XML"), FileAssociationsManager.Holder.XML_FILES)
|
||||
.withFileFilter(file -> !file.equals(virtualFile));
|
||||
|
||||
final VirtualFile[] virtualFiles = FileChooser.chooseFiles(descriptor, psiFile.getProject(), psiFile.getVirtualFile());
|
||||
|
||||
for (VirtualFile file : virtualFiles) {
|
||||
var virtualFiles = FileChooser.chooseFiles(descriptor, psiFile.getProject(), psiFile.getVirtualFile());
|
||||
for (var file : virtualFiles) {
|
||||
assert !virtualFile.equals(file);
|
||||
myManager.addAssociation(psiFile, file);
|
||||
}
|
||||
|
||||
@@ -15,24 +15,19 @@
|
||||
*/
|
||||
package org.intellij.lang.xpath.xslt.associations.impl;
|
||||
|
||||
import com.intellij.ide.IdeCoreBundle;
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.fileTypes.FileTypeManager;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.intellij.lang.xpath.xslt.associations.FileAssociationsManager;
|
||||
|
||||
/**
|
||||
* @deprecated use {@link com.intellij.openapi.fileChooser.FileChooserDescriptorFactory}
|
||||
* along with {@link FileChooserDescriptor#withExtensionFilter(String, FileType...)}.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
public class AnyXMLDescriptor extends FileChooserDescriptor {
|
||||
final FileTypeManager myFileTypeManager;
|
||||
|
||||
public AnyXMLDescriptor(boolean chooseMultiple) {
|
||||
super(true, false, false, false, false, chooseMultiple);
|
||||
myFileTypeManager = FileTypeManager.getInstance();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) {
|
||||
final FileType fileType = file.getFileType();
|
||||
return file.isDirectory() || (super.isFileVisible(file, showHiddenFiles)
|
||||
&& FileAssociationsManager.Holder.XML_FILES_LIST.contains(fileType));
|
||||
withExtensionFilter(IdeCoreBundle.message("file.chooser.files.label", "XML"), FileAssociationsManager.Holder.XML_FILES);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,9 +17,11 @@ package org.intellij.lang.xpath.xslt.run;
|
||||
|
||||
import com.intellij.execution.impl.CheckableRunConfigurationEditor;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.IdeCoreBundle;
|
||||
import com.intellij.ide.highlighter.ModuleFileType;
|
||||
import com.intellij.ide.highlighter.ProjectFileType;
|
||||
import com.intellij.ide.highlighter.WorkspaceFileType;
|
||||
import com.intellij.ide.highlighter.XmlFileType;
|
||||
import com.intellij.openapi.actionSystem.LangDataKeys;
|
||||
import com.intellij.openapi.application.ReadAction;
|
||||
import com.intellij.openapi.application.WriteAction;
|
||||
@@ -59,7 +61,6 @@ import com.intellij.util.ui.PlatformColors;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.intellij.lang.xpath.xslt.XsltSupport;
|
||||
import org.intellij.lang.xpath.xslt.associations.FileAssociationsManager;
|
||||
import org.intellij.lang.xpath.xslt.associations.impl.AnyXMLDescriptor;
|
||||
import org.intellij.plugins.xpathView.XPathBundle;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -123,21 +124,15 @@ class XsltRunSettingsEditor extends SettingsEditor<XsltRunConfiguration>
|
||||
private final FileChooserDescriptor myXmlDescriptor;
|
||||
private final FileChooserDescriptor myXsltDescriptor;
|
||||
|
||||
Editor(final Project project) {
|
||||
final PsiManager psiManager = PsiManager.getInstance(project);
|
||||
Editor(Project project) {
|
||||
var psiManager = PsiManager.getInstance(project);
|
||||
myXsltDescriptor = FileChooserDescriptorFactory.createSingleFileDescriptor(XmlFileType.INSTANCE)
|
||||
.withFileFilter(file -> {
|
||||
var psiFile = psiManager.findFile(file);
|
||||
return psiFile != null && XsltSupport.isXsltFile(psiFile);
|
||||
})
|
||||
.withTitle(XPathBundle.message("dialog.title.choose.xslt.file"));
|
||||
|
||||
myXsltDescriptor = new FileChooserDescriptor(true, false, false, false, false, false) {
|
||||
@Override
|
||||
public boolean isFileVisible(final VirtualFile file, boolean showHiddenFiles) {
|
||||
if (file.isDirectory()) return true;
|
||||
if (!super.isFileVisible(file, showHiddenFiles)) return false;
|
||||
|
||||
return ReadAction.compute(() -> {
|
||||
final PsiFile psiFile = psiManager.findFile(file);
|
||||
return psiFile != null && XsltSupport.isXsltFile(psiFile);
|
||||
});
|
||||
}
|
||||
}.withTitle(XPathBundle.message("dialog.title.choose.xslt.file"));
|
||||
final TextComponentAccessor<JTextField> projectDefaultAccessor = new TextComponentAccessor<>() {
|
||||
@Override
|
||||
public String getText(JTextField component) {
|
||||
@@ -195,7 +190,9 @@ class XsltRunSettingsEditor extends SettingsEditor<XsltRunConfiguration>
|
||||
|
||||
myXmlInputFile.getComboBox().setEditable(true);
|
||||
|
||||
myXmlDescriptor = new AnyXMLDescriptor(false).withTitle(XPathBundle.message("dialog.title.choose.xml.file"));
|
||||
myXmlDescriptor = FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor()
|
||||
.withExtensionFilter(IdeCoreBundle.message("file.chooser.files.label", "XML"), FileAssociationsManager.Holder.XML_FILES)
|
||||
.withTitle(XPathBundle.message("dialog.title.choose.xml.file"));
|
||||
myXmlInputFile.addBrowseFolderListener(project, myXmlDescriptor, new TextComponentAccessor<>() {
|
||||
@Override
|
||||
public String getText(JComboBox comboBox) {
|
||||
|
||||
@@ -140,26 +140,9 @@ public final class PythonSdkType extends SdkType {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) {
|
||||
// TODO: add a better, customizable filtering
|
||||
if (!file.isDirectory()) {
|
||||
if (isLocatedInLocalWindowsFS(file)) {
|
||||
String path = file.getPath();
|
||||
boolean looksExecutable = false;
|
||||
for (String ext : PythonSdkUtil.WINDOWS_EXECUTABLE_SUFFIXES) {
|
||||
if (path.endsWith(ext)) {
|
||||
looksExecutable = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return looksExecutable && super.isFileVisible(file, showHiddenFiles);
|
||||
}
|
||||
}
|
||||
return super.isFileVisible(file, showHiddenFiles);
|
||||
}
|
||||
}.withTitle(PyBundle.message("sdk.select.path")).withShowHiddenFiles(SystemInfo.isUnix);
|
||||
}
|
||||
.withTitle(PyBundle.message("sdk.select.path"))
|
||||
.withShowHiddenFiles(SystemInfo.isUnix);
|
||||
|
||||
// XXX: Workaround for PY-21787 and PY-43507 since the native macOS dialog always follows symlinks
|
||||
if (SystemInfo.isMac) {
|
||||
@@ -169,10 +152,6 @@ public final class PythonSdkType extends SdkType {
|
||||
return descriptor;
|
||||
}
|
||||
|
||||
private static boolean isLocatedInLocalWindowsFS(@NotNull VirtualFile file) {
|
||||
return SystemInfo.isWindows && !isCustomPythonSdkHomePath(file.getPath());
|
||||
}
|
||||
|
||||
private static boolean isLocatedInWsl(@NotNull VirtualFile file) {
|
||||
return SystemInfo.isWindows && isCustomPythonSdkHomePath(file.getPath());
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.intellij.execution.target.LanguageRuntimeType
|
||||
import com.intellij.execution.target.TargetEnvironmentConfiguration
|
||||
import com.intellij.execution.target.local.LocalTargetEnvironmentRequest
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptor
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory
|
||||
import com.intellij.openapi.observable.properties.GraphProperty
|
||||
import com.intellij.openapi.observable.properties.ObservableMutableProperty
|
||||
import com.intellij.openapi.observable.properties.ObservableProperty
|
||||
@@ -13,17 +14,10 @@ import com.intellij.openapi.observable.properties.PropertyGraph
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.openapi.ui.validation.validationErrorIf
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.platform.util.progress.RawProgressReporter
|
||||
import com.jetbrains.python.PyBundle
|
||||
import com.jetbrains.python.psi.LanguageLevel
|
||||
import com.jetbrains.python.sdk.conda.IntrospectableCommandExecutor
|
||||
import com.jetbrains.python.sdk.conda.TargetCommandExecutor
|
||||
import com.jetbrains.python.sdk.conda.TargetEnvironmentRequestCommandExecutor
|
||||
import com.jetbrains.python.sdk.conda.condaSupportedLanguages
|
||||
import com.jetbrains.python.sdk.conda.createCondaSdkAlongWithNewEnv
|
||||
import com.jetbrains.python.sdk.conda.createCondaSdkFromExistingEnv
|
||||
import com.jetbrains.python.sdk.conda.suggestCondaPath
|
||||
import com.jetbrains.python.sdk.conda.*
|
||||
import com.jetbrains.python.sdk.flavors.conda.NewCondaEnvRequest
|
||||
import com.jetbrains.python.sdk.flavors.conda.PyCondaCommand
|
||||
import com.jetbrains.python.sdk.flavors.conda.PyCondaEnv
|
||||
@@ -57,10 +51,7 @@ class PyAddCondaPanelModel(val targetConfiguration: TargetEnvironmentConfigurati
|
||||
val languageLevels: List<LanguageLevel> = condaSupportedLanguages
|
||||
|
||||
val condaPathFileChooser: FileChooserDescriptor
|
||||
get() = object : FileChooserDescriptor(true, false, false, false, false, false) {
|
||||
override fun isFileVisible(file: VirtualFile?, showHiddenFiles: Boolean): Boolean =
|
||||
super.isFileVisible(file, showHiddenFiles) && (file?.let { it.isDirectory || condaPathIsValid(it.path) } != false)
|
||||
}
|
||||
get() = FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor().withFileFilter { condaPathIsValid(it.path) }
|
||||
|
||||
/**
|
||||
* If target is mutable we can create new env on it
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.xml.util;
|
||||
|
||||
import com.intellij.codeInspection.InspectionProfile;
|
||||
@@ -15,6 +15,7 @@ import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.XmlTypedHandlersAdditionalSupport;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.fileTypes.FileTypeRegistry;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.NlsSafe;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
@@ -707,13 +708,17 @@ public final class HtmlUtil {
|
||||
}
|
||||
|
||||
public static boolean isHtmlFile(@NotNull PsiElement element) {
|
||||
Language language = element.getLanguage();
|
||||
var language = element.getLanguage();
|
||||
return language.isKindOf(HTMLLanguage.INSTANCE) || language.isKindOf(XHTMLLanguage.INSTANCE);
|
||||
}
|
||||
|
||||
public static boolean isHtmlFile(@NotNull VirtualFile file) {
|
||||
FileType fileType = file.getFileType();
|
||||
return fileType == HtmlFileType.INSTANCE || fileType == XHtmlFileType.INSTANCE;
|
||||
var registry = FileTypeRegistry.getInstance();
|
||||
return registry.isFileOfType(file, HtmlFileType.INSTANCE) || registry.isFileOfType(file, XHtmlFileType.INSTANCE);
|
||||
}
|
||||
|
||||
public static FileType @NotNull [] getHtmlFileTypes() {
|
||||
return new FileType[]{HtmlFileType.INSTANCE, XHtmlFileType.INSTANCE};
|
||||
}
|
||||
|
||||
public static boolean isHtmlTagContainingFile(PsiElement element) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.xml.tools;
|
||||
|
||||
|
||||
@@ -54,8 +54,7 @@ final class GenerateInstanceDocumentFromSchemaDialog extends DialogWrapper {
|
||||
super(project, true);
|
||||
myProject = project;
|
||||
|
||||
UIUtils
|
||||
.configureBrowseButton(project, generateFromUrl, new String[]{"xsd"}, XmlBundle.message("select.xsd.schema.dialog.title"), false);
|
||||
UIUtils.configureBrowseButton(project, generateFromUrl, "xsd", XmlBundle.message("select.xsd.schema.dialog.title"), false);
|
||||
|
||||
doInitFor(rootElementChooserText, rootElementChooser);
|
||||
doInitFor(generateFromUrlText, generateFromUrl.getTextField());
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.xml.tools;
|
||||
|
||||
import com.intellij.codeInspection.util.InspectionMessage;
|
||||
@@ -69,7 +69,7 @@ final class GenerateSchemaFromInstanceDocumentDialog extends DialogWrapper {
|
||||
detectEnumerationsLimit.setText("10");
|
||||
|
||||
|
||||
UIUtils.configureBrowseButton(project, generateFromUrl, new String[] {"xml"}, XmlBundle.message("select.xml.document.dialog.title"), false);
|
||||
UIUtils.configureBrowseButton(project, generateFromUrl, "xml", XmlBundle.message("select.xml.document.dialog.title"), false);
|
||||
doInitFor(generateFromUrlText, generateFromUrl.getTextField());
|
||||
|
||||
doInitFor(resultSchemaFileNameText, resultSchemaFileName);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.xml.tools;
|
||||
|
||||
import com.intellij.javaee.ExternalResourceManager;
|
||||
@@ -10,57 +10,38 @@ import com.intellij.openapi.ui.TextFieldWithBrowseButton;
|
||||
import com.intellij.openapi.util.NlsContexts.DialogTitle;
|
||||
import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
import com.intellij.openapi.vfs.VfsUtilCore;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.xml.XmlBundle;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Konstantin Bulenkov
|
||||
*/
|
||||
final class UIUtils {
|
||||
private UIUtils() {}
|
||||
|
||||
public static void configureBrowseButton(final Project myProject,
|
||||
final TextFieldWithBrowseButton wsdlUrl,
|
||||
final String[] _extensions,
|
||||
final @DialogTitle String selectFileDialogTitle,
|
||||
final boolean multipleFileSelection) {
|
||||
public static void configureBrowseButton(
|
||||
Project myProject,
|
||||
TextFieldWithBrowseButton wsdlUrl,
|
||||
String extension,
|
||||
@DialogTitle String selectFileDialogTitle,
|
||||
boolean multipleFileSelection
|
||||
) {
|
||||
wsdlUrl.getButton().setToolTipText(XmlBundle.message("browse.button.tooltip"));
|
||||
wsdlUrl.getButton().addActionListener(
|
||||
new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent actionEvent) {
|
||||
final FileChooserDescriptor fileChooserDescriptor = new FileChooserDescriptor(true, false, false, false, false, multipleFileSelection) {
|
||||
private final List<String> extensions = Arrays.asList(_extensions);
|
||||
var fileChooserDescriptor = new FileChooserDescriptor(true, false, false, false, false, multipleFileSelection)
|
||||
.withExtensionFilter(extension)
|
||||
.withTitle(selectFileDialogTitle);
|
||||
|
||||
@Override
|
||||
public boolean isFileSelectable(@Nullable VirtualFile virtualFile) {
|
||||
if (virtualFile == null) return false;
|
||||
return extensions.contains(virtualFile.getExtension());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) {
|
||||
return super.isFileVisible(file, showHiddenFiles) && (file.isDirectory() || isFileSelectable(file));
|
||||
}
|
||||
};
|
||||
|
||||
fileChooserDescriptor.setTitle(selectFileDialogTitle);
|
||||
|
||||
VirtualFile initialFile = ProjectUtil.guessProjectDir(myProject);
|
||||
String selectedItem = wsdlUrl.getTextField().getText();
|
||||
var initialFile = ProjectUtil.guessProjectDir(myProject);
|
||||
var selectedItem = wsdlUrl.getTextField().getText();
|
||||
if (selectedItem != null && selectedItem.startsWith(LocalFileSystem.PROTOCOL_PREFIX)) {
|
||||
VirtualFile fileByPath = VfsUtilCore
|
||||
.findRelativeFile(ExternalResourceManager.getInstance().getResourceLocation(VfsUtilCore.fixURLforIDEA(selectedItem)), null);
|
||||
var fileByPath = VfsUtilCore.findRelativeFile(ExternalResourceManager.getInstance().getResourceLocation(VfsUtilCore.fixURLforIDEA(selectedItem)), null);
|
||||
if (fileByPath != null) initialFile = fileByPath;
|
||||
}
|
||||
|
||||
final VirtualFile[] virtualFiles = FileChooser.chooseFiles(fileChooserDescriptor, myProject, initialFile);
|
||||
var virtualFiles = FileChooser.chooseFiles(fileChooserDescriptor, myProject, initialFile);
|
||||
if (virtualFiles.length == 1) {
|
||||
String url = VfsUtilCore.fixIDEAUrl(virtualFiles[0].getUrl());
|
||||
wsdlUrl.setText(url);
|
||||
|
||||
Reference in New Issue
Block a user