[platform] migrating platform choosers to extension-based filters (IJPL-150176)

GitOrigin-RevId: 72b4a6f4c258d4235349c16a87b2d03d78168c4f
This commit is contained in:
Roman Shevchenko
2024-09-26 17:48:09 +02:00
committed by intellij-monorepo-bot
parent 122a84ccfd
commit c954cb746f
19 changed files with 83 additions and 141 deletions

View File

@@ -219,8 +219,8 @@ public class BackgroundImageDialog extends DialogWrapper {
initFillPanel(myFillPanel, myFillGroup, getDisposable());
((CardLayout)myPreviewPanel.getLayout()).show(myPreviewPanel, EDITOR);
myPathField.getComboBox().setEditable(true);
FileChooserDescriptor descriptor = new FileChooserDescriptor(true, false, false, false, true, false)
.withFileFilter(file -> ImageFileTypeManager.getInstance().isImage(file));
var descriptor = new FileChooserDescriptor(true, false, false, false, true, false)
.withExtensionFilter(ImageFileTypeManager.getInstance().getImageFileType());
myPathField.addBrowseFolderListener(null, descriptor, TextComponentAccessor.STRING_COMBOBOX_WHOLE_TEXT);
JTextComponent textComponent = getComboEditor();
textComponent.getDocument().addDocumentListener(new DocumentAdapter() {

View File

@@ -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.configurationStore
import com.intellij.ide.util.ElementsChooser
@@ -22,7 +22,6 @@ import java.awt.event.ActionEvent
import java.io.File
import java.nio.file.Path
import java.nio.file.Paths
import java.util.*
import javax.swing.*
private const val DEFAULT_FILE_NAME = "settings.zip"
@@ -137,7 +136,7 @@ internal class ChooseComponentsToExportDialog(fileToComponents: Map<FileSpec, Li
title = ConfigurationStoreBundle.message("title.export.file.location")
description = ConfigurationStoreBundle.message("prompt.choose.export.settings.file.path")
isHideIgnored = false
withFileFilter { ConfigImportHelper.isSettingsFile(it) }
ConfigImportHelper.setSettingsFilter(this)
}
chooseSettingsFile(descriptor, pathPanel.text, window) { file ->
val path = if (file.isDirectory) "${file.path}/$DEFAULT_FILE_NAME" else file.path
@@ -217,4 +216,4 @@ private class ComponentElementProperties : MultiStateElementsChooser.ElementProp
}
return names.joinToString(", ")
}
}
}

View File

@@ -1,4 +1,4 @@
// Copyright 2000-2021 JetBrains s.r.o. and contributors. 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.configurationStore
import com.intellij.ide.IdeBundle
@@ -58,7 +58,7 @@ open class ImportSettingsAction : AnAction(), ActionRemoteBehaviorSpecification.
title = ConfigurationStoreBundle.message("title.import.file.location")
description = ConfigurationStoreBundle.message("prompt.choose.import.file.path")
isHideIgnored = false
withFileFilter { ConfigImportHelper.isSettingsFile(it) }
ConfigImportHelper.setSettingsFilter(this)
}
chooseSettingsFile(descriptor, PathManager.getOriginalConfigDir().pathString, component) {

View File

@@ -212,7 +212,7 @@ class PasswordSafeConfigurableUi(private val settings: PasswordSafeSettings) : C
row(CredentialStoreBundle.message("settings.password.database")) {
val fileChooserDescriptor = FileChooserDescriptorFactory.createSingleLocalFileDescriptor()
.withTitle(CredentialStoreBundle.message("passwordSafeConfigurable.keepass.database.file"))
.withFileFilter { it.isDirectory || it.name.endsWith(".kdbx") }
.withExtensionFilter("kdbx")
keePassDbFile = textFieldWithBrowseButton(fileChooserDescriptor, fileChosen = {
val path = when {
it.isDirectory -> "${it.path}${File.separator}$DB_FILE_NAME"
@@ -310,10 +310,8 @@ class PasswordSafeConfigurableUi(private val settings: PasswordSafeSettings) : C
override fun actionPerformed(event: AnActionEvent) {
closeCurrentStore()
FileChooserDescriptorFactory.createSingleLocalFileDescriptor()
.withFileFilter {
!it.isDirectory && it.nameSequence.endsWith(".kdbx")
}
FileChooserDescriptorFactory.createSingleFileDescriptor()
.withExtensionFilter("kdbx")
.chooseFile(event) {
createKeePassFileManager()?.import(Paths.get(it.path), event)
}

View File

@@ -14,13 +14,12 @@ import com.intellij.codeInspection.offlineViewer.OfflineInspectionRVContentProvi
import com.intellij.codeInspection.offlineViewer.OfflineViewParseUtil;
import com.intellij.codeInspection.reference.RefManagerImpl;
import com.intellij.codeInspection.ui.InspectionResultsView;
import com.intellij.icons.AllIcons;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.fileChooser.FileChooser;
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.progress.ProgressIndicator;
@@ -39,7 +38,6 @@ import com.intellij.util.ExceptionUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.nio.file.Path;
import java.util.*;
@@ -65,16 +63,8 @@ public final class ViewOfflineResultsAction extends AnAction {
LOG.assertTrue(project != null);
final FileChooserDescriptor descriptor = new FileChooserDescriptor(true, true, false, false, false, false){
@Override
public Icon getIcon(VirtualFile file) {
if (file.isDirectory() &&
file.findChild(InspectionsResultUtil.DESCRIPTIONS + "." + StdFileTypes.XML.getDefaultExtension()) != null) {
return AllIcons.Nodes.InspectionResults;
}
return super.getIcon(file);
}
}.withFileFilter(f -> f.isDirectory() || StdFileTypes.XML.getDefaultExtension().equals(f.getExtension()))
var descriptor = FileChooserDescriptorFactory.createSingleFileOrFolderDescriptor()
.withExtensionFilter("xml")
.withTitle(InspectionsBundle.message("view.offline.inspections.select.path.title"))
.withDescription(InspectionsBundle.message("view.offline.inspections.select.path.description"));
final VirtualFile virtualFile = FileChooser.chooseFile(descriptor, project, null);

View File

@@ -11,7 +11,6 @@ import com.intellij.openapi.components.*;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.fileChooser.FileChooser;
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
import com.intellij.openapi.fileChooser.FileElement;
import com.intellij.openapi.fileChooser.ex.FileChooserKeys;
import com.intellij.openapi.fileEditor.impl.LoadTextUtil;
import com.intellij.openapi.ui.Messages;
@@ -151,6 +150,15 @@ public final class PlaybackDebugger implements UiDebuggerExtension, PlaybackRunn
LocalFileSystem.getInstance().addVirtualFileListener(myVfsListener);
}
private static final class ScriptFileChooserDescriptor extends FileChooserDescriptor {
ScriptFileChooserDescriptor() {
super(true, false, false, false, false, false);
putUserData(FileChooserKeys.NEW_FILE_TYPE, UiScriptFileType.getInstance());
putUserData(FileChooserKeys.NEW_FILE_TEMPLATE_TEXT, "");
withExtensionFilter(UiScriptFileType.myExtension);
}
}
private final class SaveAction extends AnAction {
SaveAction() {
super(IdeBundle.messagePointer("action.AnAction.text.save"),
@@ -186,21 +194,6 @@ public final class PlaybackDebugger implements UiDebuggerExtension, PlaybackRunn
}
}
private static final class ScriptFileChooserDescriptor extends FileChooserDescriptor {
ScriptFileChooserDescriptor() {
super(true, false, false, false, false, false);
putUserData(FileChooserKeys.NEW_FILE_TYPE, UiScriptFileType.getInstance());
putUserData(FileChooserKeys.NEW_FILE_TEMPLATE_TEXT, "");
}
@Override
public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) {
if (!showHiddenFiles && FileElement.isFileHidden(file)) return false;
return file.getExtension() != null && file.getExtension().equalsIgnoreCase(UiScriptFileType.myExtension)
|| super.isFileVisible(file, showHiddenFiles) && file.isDirectory();
}
}
private final class SetScriptFileAction extends AnAction {
SetScriptFileAction() {
//noinspection DialogTitleCapitalization

View File

@@ -605,6 +605,7 @@ macOS.light.theme.name=macOS Light
title.browse.icon=Browse Icon
prompt.browse.icon.for.selected.action=Browse icon in SVG or PNG format
browse.custom.icon.hint=To set custom icon, specify path to SVG or PNG file.
icon.file.filter.label=Icon files
icon.validation.message.format=The icon format is incorrect
icon.validation.message.not.found=The icon does not exist
@@ -1314,6 +1315,7 @@ settings.certificate.accept.non.trusted.certificates.automatically=Accept non-tr
settings.certificate.no.certificate.selected=No certificate selected
settings.certificate.no.certificates=No certificates
settings.certificate.choose.certificate=Choose Certificate
settings.certificate.filter.label=Certificate files
settings.certificate.malformed.x509.server.certificate=Malformed X509 server certificate
settings.certificate.not.imported=Not Imported
settings.certificate.certificate.already.exists=Certificate already exists

View File

@@ -1,9 +1,8 @@
// Copyright 2000-2021 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.plugins.certificates
import com.intellij.ide.IdeBundle
import com.intellij.openapi.fileChooser.FileChooser
import com.intellij.openapi.fileChooser.FileTypeDescriptor
import com.intellij.openapi.options.BoundConfigurable
import com.intellij.openapi.options.Configurable
import com.intellij.openapi.options.ConfigurationException
@@ -59,13 +58,6 @@ class PluginCertificateManager :
}
}
private val CERTIFICATE_DESCRIPTOR = FileTypeDescriptor(
IdeBundle.message("settings.certificate.choose.certificate"),
".crt", ".CRT",
".cer", ".CER",
".pem", ".PEM",
".der", ".DER"
)
private val EMPTY_PANEL = "empty.panel"
private val myTrustManager: MutableTrustManager = PluginCertificateStore.customTrustManager
private val myTreeBuilder: CertificateTreeBuilder = CertificateTreeBuilder(myTree)
@@ -164,7 +156,7 @@ class PluginCertificateManager :
}
private fun chooseFileAndAdd() {
FileChooser.chooseFile(CERTIFICATE_DESCRIPTOR, null, null) { file: VirtualFile ->
FileChooser.chooseFile(CertificateConfigurable.CERTIFICATE_DESCRIPTOR, null, null) { file: VirtualFile ->
val path = file.path
val certificate = CertificateUtil.loadX509Certificate(path)
when {
@@ -222,4 +214,4 @@ class PluginCertificateManager :
myDetailsPanel.add(scrollPane, uniqueName)
}
}
}

View 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.ide.ui.customization
import com.intellij.icons.AllIcons
@@ -196,9 +196,7 @@ internal class BrowseIconsComboBox(private val customActionsSchema: CustomAction
private fun browseIconAndSelect() {
val descriptor = FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor()
.withFileFilter { file ->
StringUtil.equalsIgnoreCase(file.extension, "svg") || StringUtil.equalsIgnoreCase(file.extension, "png")
}
.withExtensionFilter(IdeBundle.message("icon.file.filter.label"), "svg", "png")
descriptor.title = IdeBundle.message("title.browse.icon")
descriptor.description = IdeBundle.message("prompt.browse.icon.for.selected.action")
val iconFile = FileChooser.chooseFile(descriptor, null, null)
@@ -330,4 +328,4 @@ internal class BrowseIconsComboBox(private val customActionsSchema: CustomAction
return cur
}
}
}
}

View File

@@ -112,9 +112,8 @@ class NewProjectWizardBaseStep(parent: NewProjectWizardStep) : AbstractNewProjec
}.bottomGap(BottomGap.SMALL)
val locationRow = row(UIBundle.message("label.project.wizard.new.project.location")) {
val fileChooserDescriptor = FileChooserDescriptorFactory.createSingleLocalFileDescriptor()
val fileChooserDescriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor()
.withTitle(message("title.select.project.file.directory", context.presentationName))
.withFileFilter { it.isDirectory }
.withPathToTextConvertor(::getPresentablePath)
.withTextToPathConvertor(::getCanonicalPath)
textFieldWithBrowseButton(fileChooserDescriptor, context.project)

View File

@@ -6,7 +6,6 @@ import com.intellij.diagnostic.VMOptions;
import com.intellij.ide.BootstrapBundle;
import com.intellij.ide.GeneralSettings;
import com.intellij.ide.actions.ImportSettingsFilenameFilter;
import com.intellij.ide.highlighter.ArchiveFileType;
import com.intellij.ide.plugins.*;
import com.intellij.ide.plugins.marketplace.MarketplacePluginDownloadService;
import com.intellij.ide.startup.StartupActionScriptManager;
@@ -19,7 +18,7 @@ import com.intellij.openapi.application.migrations.PythonProMigration242;
import com.intellij.openapi.components.StoragePathMacros;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.extensions.PluginId;
import com.intellij.openapi.fileTypes.FileTypeRegistry;
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
import com.intellij.openapi.keymap.impl.KeymapManagerImpl;
import com.intellij.openapi.progress.EmptyProgressIndicator;
import com.intellij.openapi.progress.ProcessCanceledException;
@@ -37,7 +36,6 @@ import com.intellij.openapi.util.registry.EarlyAccessRegistryManager;
import com.intellij.openapi.util.text.NaturalComparator;
import com.intellij.openapi.util.text.StringUtilRt;
import com.intellij.openapi.util.text.Strings;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.platform.ide.bootstrap.IdeStartupWizardKt;
import com.intellij.platform.ide.bootstrap.StartupErrorReporter;
import com.intellij.ui.AppUIUtilKt;
@@ -480,9 +478,8 @@ public final class ConfigImportHelper {
return isFirstSession() && !isConfigImported();
}
/** Simple check by file type, content is not checked. */
public static boolean isSettingsFile(@NotNull VirtualFile file) {
return FileTypeRegistry.getInstance().isFileOfType(file, ArchiveFileType.INSTANCE);
public static void setSettingsFilter(@NotNull FileChooserDescriptor descriptor) {
descriptor.withExtensionFilter(BootstrapBundle.message("import.settings.filter"), "zip", "jar");
}
public static void setConfigImportedInThisSession() {

View File

@@ -1,11 +1,9 @@
// 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.openapi.application;
import com.intellij.ide.BootstrapBundle;
import com.intellij.openapi.MnemonicHelper;
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
import com.intellij.openapi.fileChooser.PathChooserDialog;
import com.intellij.openapi.fileChooser.impl.FileChooserFactoryImpl;
import com.intellij.openapi.ui.ComboBox;
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
@@ -94,11 +92,10 @@ final class ImportOldConfigsPanel extends JDialog {
}
myPrevInstallation.setTextFieldPreferredWidth(50);
myPrevInstallation.addActionListener(e -> {
FileChooserDescriptor chooserDescriptor = FileChooserDescriptorFactory.createSingleLocalFileDescriptor();
chooserDescriptor.setHideIgnored(false);
chooserDescriptor.withFileFilter(file -> file.isDirectory() || ConfigImportHelper.isSettingsFile(file));
Ref<File> fileRef = Ref.create();
PathChooserDialog chooser = FileChooserFactoryImpl.createNativePathChooserIfEnabled(chooserDescriptor, null, myRootPanel);
var chooserDescriptor = FileChooserDescriptorFactory.createSingleLocalFileDescriptor().withHideIgnored(false);
ConfigImportHelper.setSettingsFilter(chooserDescriptor);
var fileRef = Ref.<File>create();
var chooser = FileChooserFactoryImpl.createNativePathChooserIfEnabled(chooserDescriptor, null, myRootPanel);
if (chooser != null) {
VirtualFile vf = myLastSelection != null ? new CoreLocalVirtualFile(new CoreLocalFileSystem(), myLastSelection) : null;
chooser.choose(vf, files -> fileRef.set(new File(files.get(0).getPresentableUrl())));
@@ -108,7 +105,7 @@ final class ImportOldConfigsPanel extends JDialog {
fc.setSelectedFile(myLastSelection != null ? myLastSelection.toFile() : null);
fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
fc.setFileHidingEnabled(SystemInfo.isWindows || SystemInfo.isMac);
fc.setFileFilter(new FileNameExtensionFilter("settings file", "zip", "jar"));
fc.setFileFilter(new FileNameExtensionFilter(BootstrapBundle.message("import.settings.filter"), "zip", "jar"));
@SuppressWarnings("DuplicatedCode")
int returnVal = fc.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {

View File

@@ -1,10 +1,9 @@
// 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.openapi.options;
import com.intellij.ide.IdeCoreBundle;
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
import com.intellij.openapi.fileChooser.FileChooserDialog;
import com.intellij.openapi.fileChooser.FileChooserFactory;
import com.intellij.openapi.fileChooser.FileElement;
import com.intellij.openapi.util.JDOMUtil;
import com.intellij.openapi.util.NlsContexts;
import com.intellij.openapi.vfs.VirtualFile;
@@ -16,28 +15,22 @@ import org.jetbrains.annotations.Nullable;
import java.awt.*;
import java.io.IOException;
import java.io.InputStream;
import java.util.Set;
import java.util.Locale;
public final class SchemeImportUtil {
public static @Nullable VirtualFile selectImportSource(final String @NotNull [] sourceExtensions,
@NotNull Component parent,
@Nullable VirtualFile preselect,
@Nullable @NlsContexts.Label String description) {
final Set<String> extensions = Set.of(sourceExtensions);
FileChooserDescriptor descriptor = new FileChooserDescriptor(true, false, canSelectJarFile(sourceExtensions), false, false, false) {
@Override
public boolean isFileVisible(VirtualFile file, boolean showHiddenFiles) {
return
(file.isDirectory() || isFileSelectable(file)) &&
(showHiddenFiles || !FileElement.isFileHidden(file));
}
@Override
public boolean isFileSelectable(@Nullable VirtualFile file) {
return file != null && !file.isDirectory() && file.getExtension() != null && extensions.contains(file.getExtension());
}
};
public static @Nullable VirtualFile selectImportSource(
@NotNull String @NotNull [] sourceExtensions,
@NotNull Component parent,
@Nullable VirtualFile preselect,
@Nullable @NlsContexts.Label String description
) {
var descriptor = new FileChooserDescriptor(true, false, canSelectJarFile(sourceExtensions), false, false, false);
if (sourceExtensions.length == 1) {
descriptor.withExtensionFilter(sourceExtensions[0]);
}
else {
descriptor.withExtensionFilter(IdeCoreBundle.message("file.chooser.files.label", sourceExtensions[0].toUpperCase(Locale.ROOT)), sourceExtensions);
}
if (description != null) {
descriptor.setDescription(description);
}

View File

@@ -1,11 +1,11 @@
// 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.openapi.wm.impl.welcomeScreen.projectActions
import com.intellij.icons.AllIcons
import com.intellij.ide.*
import com.intellij.ide.RecentProjectIconHelper.Companion.createIcon
import com.intellij.openapi.actionSystem.*
import com.intellij.openapi.fileChooser.FileChooserDescriptor
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory
import com.intellij.openapi.fileChooser.FileChooserFactory
import com.intellij.openapi.project.DumbAwareAction
import com.intellij.openapi.util.io.FileUtil
@@ -109,9 +109,8 @@ internal class ChangeProjectIconAction : RecentProjectsWelcomeScreenActionBase()
private class ChangeProjectIcon(private val ui: ProjectIconUI) : AnAction() {
override fun actionPerformed(e: AnActionEvent) {
val files = FileChooserFactory.getInstance()
.createFileChooser(FileChooserDescriptor(true, false, false, false, false, false).withFileFilter { file: VirtualFile ->
"svg".equals(file.extension, ignoreCase = true)
}, null, null).choose(null)
.createFileChooser(FileChooserDescriptorFactory.createSingleFileDescriptor("svg"), null, null)
.choose(null)
if (files.size == 1) {
try {
val newIcon = createIcon(Path.of(files[0].path))

View File

@@ -1,9 +1,10 @@
// 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.util.net.ssl;
import com.intellij.ide.IdeBundle;
import com.intellij.openapi.fileChooser.FileChooser;
import com.intellij.openapi.fileChooser.FileTypeDescriptor;
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
import com.intellij.openapi.options.Configurable;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.options.SearchableConfigurable;
@@ -31,18 +32,13 @@ import java.util.Set;
import static com.intellij.util.net.ssl.CertificateUtil.getCommonName;
import static com.intellij.util.net.ssl.ConfirmingTrustManager.MutableTrustManager;
/**
* @author Mikhail Golubev
*/
@ApiStatus.Internal
public final class CertificateConfigurable implements SearchableConfigurable, Configurable.NoScroll, CertificateListener {
private static final FileTypeDescriptor CERTIFICATE_DESCRIPTOR =
new FileTypeDescriptor(IdeBundle.message("settings.certificate.choose.certificate"),
".crt", ".CRT",
".cer", ".CER",
".pem", ".PEM",
".der", ".DER");
public static final @NonNls String EMPTY_PANEL = "empty.panel";
public static final FileChooserDescriptor CERTIFICATE_DESCRIPTOR = FileChooserDescriptorFactory.createSingleFileDescriptor()
.withTitle(IdeBundle.message("settings.certificate.choose.certificate"))
.withExtensionFilter(IdeBundle.message("settings.certificate.filter.label"), "crt", "cer", "pem", "der");
public static final String EMPTY_PANEL = "empty.panel";
private JPanel myRootPanel;

View File

@@ -66,6 +66,7 @@ bootstrap.error.message.marketplace=As a workaround, you may uninstall or update
restart.failed.title=Restart Failed
import.settings.title=Import {0} Settings
import.settings.filter=Settings files
import.settings.restart=Imported settings contain custom VM options.\nPlease restart the IDE to apply these options.
import.settings.restart.now=Restart Now
import.settings.restart.later=Restart Later

View File

@@ -1,5 +1,4 @@
// Copyright 2000-2022 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.ide.util
import com.intellij.featureStatistics.ProductivityFeaturesRegistry
@@ -10,6 +9,7 @@ import com.intellij.openapi.actionSystem.CommonDataKeys
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.fileChooser.FileChooser
import com.intellij.openapi.fileChooser.FileChooserDescriptor
import com.intellij.openapi.fileTypes.FileTypeManager
import com.intellij.openapi.ide.CopyPasteManager
import com.intellij.openapi.progress.runBackgroundableTask
import com.intellij.openapi.vfs.VirtualFile
@@ -76,7 +76,7 @@ internal class SelectAndDumpInvalidTipsAction : DumpInvalidTipsAction() {
override fun actionPerformed(e: AnActionEvent) {
val project = e.getData(CommonDataKeys.PROJECT)
val descriptor = FileChooserDescriptor(true, true, false, false, false, true)
.withFileFilter { it.isDirectory || it.extension == "html" || it.extension == "htm" }
.withExtensionFilter(FileTypeManager.getInstance().getStdFileType("HTML"))
.withDescription("Choose HTML files or folders with tips.")
val chosenFiles = FileChooser.chooseFiles(descriptor, project, null)
@@ -97,4 +97,3 @@ internal class SelectAndDumpInvalidTipsAction : DumpInvalidTipsAction() {
}
}
}

View File

@@ -1,14 +1,15 @@
// Copyright 2000-2021 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.util;
import com.intellij.CommonBundle;
import com.intellij.ide.IdeBundle;
import com.intellij.ide.TipsOfTheDayUsagesCollector;
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
import com.intellij.openapi.fileChooser.FileChooserFactory;
import com.intellij.openapi.fileTypes.FileTypeManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
@@ -136,8 +137,8 @@ final class TipDialog extends DialogWrapper {
@Override
public void actionPerformed(ActionEvent e) {
PropertiesComponent propertiesComponent = PropertiesComponent.getInstance();
FileChooserDescriptor descriptor = new FileChooserDescriptor(true, false, false, false, false, true)
.withFileFilter(file -> Comparing.equal(file.getExtension(), "html", file.isCaseSensitive()));
FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createMultipleFilesNoJarsDescriptor()
.withExtensionFilter(FileTypeManager.getInstance().getStdFileType("HTML"));
String value = propertiesComponent.getValue(LAST_OPENED_TIP_PATH);
VirtualFile lastOpenedTip = value != null ? LocalFileSystem.getInstance().findFileByPath(value) : null;
VirtualFile[] pathToSelect = lastOpenedTip != null ? new VirtualFile[]{lastOpenedTip} : VirtualFile.EMPTY_ARRAY;

View File

@@ -4,7 +4,6 @@ package org.intellij.plugins.intelliLang;
import com.intellij.icons.AllIcons;
import com.intellij.ide.DataManager;
import com.intellij.ide.IdeBundle;
import com.intellij.ide.highlighter.ArchiveFileType;
import com.intellij.ide.ui.SplitterProportionsDataImpl;
import com.intellij.lang.Language;
import com.intellij.openapi.actionSystem.*;
@@ -13,9 +12,8 @@ import com.intellij.openapi.fileChooser.FileChooserDescriptor;
import com.intellij.openapi.fileChooser.FileChooserFactory;
import com.intellij.openapi.fileChooser.FileSaverDescriptor;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.FileTypeRegistry;
import com.intellij.openapi.fileTypes.FileTypeManager;
import com.intellij.openapi.fileTypes.FileTypes;
import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.openapi.options.Configurable;
import com.intellij.openapi.options.SearchableConfigurable;
import com.intellij.openapi.project.DumbAwareAction;
@@ -706,20 +704,10 @@ public final class InjectionsSettingsUI extends SearchableConfigurable.Parent.Ab
}
private void doImportAction(final DataContext dataContext) {
final FileChooserDescriptor descriptor = new FileChooserDescriptor(true, false, false, false, true, false) {
@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(IntelliLangBundle.message("dialog.file.chooser.description.please.select.the.configuration.file"));
descriptor.setTitle(IntelliLangBundle.message("dialog.file.chooser.title.import.configuration"));
var descriptor = new FileChooserDescriptor(true, false, false, false, true, false)
.withExtensionFilter(FileTypeManager.getInstance().getStdFileType("XML"))
.withTitle(IntelliLangBundle.message("dialog.file.chooser.title.import.configuration"))
.withDescription(IntelliLangBundle.message("dialog.file.chooser.description.please.select.the.configuration.file"));
descriptor.putUserData(LangDataKeys.MODULE_CONTEXT, PlatformCoreDataKeys.MODULE.getData(dataContext));
@@ -905,4 +893,4 @@ public final class InjectionsSettingsUI extends SearchableConfigurable.Parent.Ab
return ActionUpdateThread.EDT;
}
}
}
}