mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
[platform] migrating platform choosers to extension-based filters (IJPL-150176)
GitOrigin-RevId: 72b4a6f4c258d4235349c16a87b2d03d78168c4f
This commit is contained in:
committed by
intellij-monorepo-bot
parent
122a84ccfd
commit
c954cb746f
@@ -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() {
|
||||
|
||||
@@ -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(", ")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user