@@ -9,7 +9,6 @@ import com.intellij.diff.requests.SimpleDiffRequest
99import com.intellij.ide.BrowserUtil
1010import com.intellij.notification.NotificationAction
1111import com.intellij.notification.NotificationType
12- import com.intellij.openapi.application.ApplicationInfo
1312import com.intellij.openapi.application.ApplicationManager
1413import com.intellij.openapi.fileChooser.FileChooser
1514import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory
@@ -65,6 +64,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ShowO
6564import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ShowSaveFileDialogParams
6665import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ShowSaveFileDialogResult
6766import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.ConnectionMetadata
67+ import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.FileChooserCompat
6868import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.LspEditorUtil
6969import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.TelemetryParsingUtil
7070import software.aws.toolkits.jetbrains.services.codewhisperer.customization.CodeWhispererModelConfigurator
@@ -312,32 +312,8 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC
312312 if (params.filters.isNotEmpty() && ! params.canSelectFolders) {
313313 // Create a combined list of all allowed extensions
314314 val allowedExtensions = params.filters.values.flatten().toSet()
315- if (isExtensionFilterSupported()) {
316- // Use reflection to call withExtensionFilter which is only available in 2024.3+
317- try {
318- val method = this .javaClass.getMethod(" withExtensionFilter" , String ::class .java, Array <String >::class .java)
319- method.invoke(this , " Image" , allowedExtensions.toTypedArray())
320- } catch (e: Exception ) {
321- // Fallback to withFileFilter if reflection fails
322- withFileFilter { virtualFile ->
323- if (virtualFile.isDirectory) {
324- true // Always allow directories for navigation
325- } else {
326- val extension = virtualFile.extension?.lowercase()
327- extension != null && allowedExtensions.contains(extension)
328- }
329- }
330- }
331- } else {
332- withFileFilter { virtualFile ->
333- if (virtualFile.isDirectory) {
334- true // Always allow directories for navigation
335- } else {
336- val extension = virtualFile.extension?.lowercase()
337- extension != null && allowedExtensions.contains(extension)
338- }
339- }
340- }
315+ val fileChooserCompat = FileChooserCompat .getInstance()
316+ fileChooserCompat.applyExtensionFilter(this , " Images" , allowedExtensions)
341317 }
342318 }
343319
@@ -614,20 +590,6 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC
614590 }
615591 }
616592
617- /* *
618- * Checks if the current JetBrains IDE version supports the withExtensionFilter API.
619- *
620- * The withExtensionFilter method was introduced in IntelliJ Platform 2024.3 (baseline version 243).
621- * For older versions, we need to fall back to withFileFilter which provides similar functionality
622- * but with different UI behavior (files are not visually filtered in the file chooser dialog).
623- *
624- * @return true if the IDE version supports withExtensionFilter (2024.3+), false otherwise
625- */
626- private fun isExtensionFilterSupported (): Boolean {
627- val baselineVersion = ApplicationInfo .getInstance().build.baselineVersion
628- return baselineVersion >= 243 // 2024.3 or later
629- }
630-
631593 companion object {
632594 val localHistoryPath = Paths .get(
633595 UserHomeDirectoryUtils .userHomeDirectory(),
0 commit comments