Skip to content

Commit 0c18a65

Browse files
committed
fix comments
1 parent dfce2b1 commit 0c18a65

File tree

4 files changed

+27
-32
lines changed

4 files changed

+27
-32
lines changed

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/AmazonQPanel.kt

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
package software.aws.toolkits.jetbrains.services.amazonq.toolwindow
55

6-
import com.google.gson.Gson
76
import com.intellij.idea.AppMode
87
import com.intellij.openapi.Disposable
98
import com.intellij.openapi.components.service
@@ -26,6 +25,7 @@ import software.aws.toolkits.jetbrains.core.coroutines.EDT
2625
import software.aws.toolkits.jetbrains.isDeveloperMode
2726
import software.aws.toolkits.jetbrains.services.amazonq.apps.AmazonQAppInitContext
2827
import software.aws.toolkits.jetbrains.services.amazonq.apps.AppConnection
28+
import software.aws.toolkits.jetbrains.services.amazonq.commands.MessageSerializer
2929
import software.aws.toolkits.jetbrains.services.amazonq.commands.MessageTypeRegistry
3030
import software.aws.toolkits.jetbrains.services.amazonq.isQSupportedInThisVersion
3131
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService
@@ -49,6 +49,7 @@ import software.aws.toolkits.resources.message
4949
import java.awt.datatransfer.DataFlavor
5050
import java.awt.dnd.DropTarget
5151
import java.awt.dnd.DropTargetDropEvent
52+
import java.io.File
5253
import java.util.concurrent.CompletableFuture
5354
import javax.imageio.ImageIO.read
5455
import javax.swing.JButton
@@ -132,6 +133,9 @@ class AmazonQPanel(val project: Project, private val scope: CoroutineScope) : Di
132133
wrapper.setContent(browserInstance.component())
133134

134135
// Add DropTarget to the browser component
136+
// JCEF does not propagate OS-level dragenter, dragOver and drop into DOM.
137+
// As an alternative, enabling the native drag in JCEF,
138+
// and let the native handling the drop event, and update the UI through JS bridge.
135139
val dropTarget = object : DropTarget() {
136140
override fun drop(dtde: DropTargetDropEvent) {
137141
try {
@@ -141,14 +145,13 @@ class AmazonQPanel(val project: Project, private val scope: CoroutineScope) : Di
141145
val fileList = transferable.getTransferData(DataFlavor.javaFileListFlavor) as List<*>
142146

143147
val errorMessages = mutableListOf<String>()
144-
val validImages = mutableListOf<java.io.File>()
148+
val validImages = mutableListOf<File>()
145149
val allowedTypes = setOf("jpg", "jpeg", "png", "gif", "webp")
146150
val maxFileSize = 3.75 * 1024 * 1024 // 3.75MB in bytes
147151
val maxDimension = 8000
148152

149-
for (file in fileList) {
150-
val fileObj = file as? java.io.File ?: continue
151-
val fileName = fileObj.name
153+
for (file in fileList as List<File>) {
154+
val fileName = file.name
152155
val ext = fileName.substringAfterLast('.', "").lowercase()
153156

154157
// File type restriction
@@ -158,14 +161,14 @@ class AmazonQPanel(val project: Project, private val scope: CoroutineScope) : Di
158161
}
159162

160163
// Size restriction
161-
if (fileObj.length() > maxFileSize) {
164+
if (file.length() > maxFileSize) {
162165
errorMessages.add("$fileName: Image must be no more than 3.75MB in size.")
163166
continue
164167
}
165168

166169
// Width/Height restriction (only for image types)
167170
try {
168-
val img = read(fileObj)
171+
val img = read(file)
169172
if (img == null) {
170173
errorMessages.add("$fileName: File could not be read as an image.")
171174
continue
@@ -183,7 +186,7 @@ class AmazonQPanel(val project: Project, private val scope: CoroutineScope) : Di
183186
continue
184187
}
185188

186-
validImages.add(fileObj)
189+
validImages.add(file)
187190
}
188191

189192
// File count restriction
@@ -192,14 +195,14 @@ class AmazonQPanel(val project: Project, private val scope: CoroutineScope) : Di
192195
validImages.subList(20, validImages.size).clear()
193196
}
194197

195-
val json = Gson().toJson(validImages)
198+
val json = MessageSerializer.getInstance().serialize(validImages)
196199
browserInstance.jcefBrowser.cefBrowser.executeJavaScript(
197200
"window.handleNativeDrop('$json')",
198201
browserInstance.jcefBrowser.cefBrowser.url,
199202
0
200203
)
201204

202-
val errorJson = Gson().toJson(errorMessages)
205+
val errorJson = MessageSerializer.getInstance().serialize(errorMessages)
203206
browserInstance.jcefBrowser.cefBrowser.executeJavaScript(
204207
"window.handleNativeNotify('$errorJson')",
205208
browserInstance.jcefBrowser.cefBrowser.url,
@@ -311,8 +314,6 @@ class AmazonQPanel(val project: Project, private val scope: CoroutineScope) : Di
311314

312315
companion object {
313316
private val LOG = getLogger<AmazonQPanel>()
314-
315-
fun getInstance(project: Project) = project.service<AmazonQPanel>()
316317
}
317318

318319
override fun dispose() {

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/Browser.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,7 @@ class Browser(parent: Disposable, private val webUri: URI, val project: Project)
161161
162162
window.handleNativeDrop = function(filePath) {
163163
const parsedFilePath = JSON.parse(filePath);
164-
const contextArray = parsedFilePath.map(fileObj => {
165-
const fullPath = fileObj.path;
164+
const contextArray = parsedFilePath.map(fullPath => {
166165
const fileName = fullPath.split(/[\\/]/).pop();
167166
return {
168167
command: fileName,

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -269,23 +269,23 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC
269269
val descriptor = when {
270270
params.canSelectFolders && params.canSelectFiles -> {
271271
if (params.canSelectMany) {
272-
FileChooserDescriptorFactory.createSingleFileOrFolderDescriptor()
272+
FileChooserDescriptorFactory.multiFilesOrDirs()
273273
} else {
274-
FileChooserDescriptorFactory.createAllButJarContentsDescriptor()
274+
FileChooserDescriptorFactory.singleFileOrDir()
275275
}
276276
}
277277
params.canSelectFolders -> {
278278
if (params.canSelectMany) {
279-
FileChooserDescriptorFactory.createMultipleFoldersDescriptor()
279+
FileChooserDescriptorFactory.multiDirs()
280280
} else {
281-
FileChooserDescriptorFactory.createSingleFolderDescriptor()
281+
FileChooserDescriptorFactory.singleDir()
282282
}
283283
}
284-
else -> {
284+
else -> { // Only files
285285
if (params.canSelectMany) {
286-
FileChooserDescriptorFactory.createMultipleFilesNoJarsDescriptor()
286+
FileChooserDescriptorFactory.multiFiles()
287287
} else {
288-
FileChooserDescriptorFactory.createSingleFileNoJarsDescriptor()
288+
FileChooserDescriptorFactory.singleFile()
289289
}
290290
}
291291
}.apply {
@@ -307,12 +307,7 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC
307307
// Apply file filters if provided
308308
if (params.filters.isNotEmpty() && !params.canSelectFolders) {
309309
// Create a combined list of all allowed extensions
310-
val allowedExtensions = params.filters.values.flatten()
311-
.map { pattern ->
312-
// Convert patterns like "*.jpg" to "jpg"
313-
pattern.removePrefix("*.").lowercase()
314-
}
315-
.toSet()
310+
val allowedExtensions = params.filters.values.flatten().toSet()
316311

317312
withFileFilter { virtualFile ->
318313
if (virtualFile.isDirectory) {

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ShowOpenFileDialogParams.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
55

66
data class ShowOpenFileDialogParams(
7-
val canSelectFiles: Boolean = false,
8-
val canSelectFolders: Boolean = false,
9-
val canSelectMany: Boolean = false,
10-
val filters: Map<String, List<String>> = emptyMap(),
11-
val title: String? = null,
7+
val canSelectFiles: Boolean,
8+
val canSelectFolders: Boolean,
9+
val canSelectMany: Boolean,
10+
val filters: Map<String, List<String>>,
11+
val title: String?,
1212
)

0 commit comments

Comments
 (0)