Skip to content

Commit aaca577

Browse files
committed
Added changes to override Lsp artifacts
1 parent 30ce060 commit aaca577

File tree

2 files changed

+70
-0
lines changed
  • plugins/amazonq
    • codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/settings
    • shared/jetbrains-community/src/software/aws/toolkits/jetbrains/settings

2 files changed

+70
-0
lines changed

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/settings/CodeWhispererConfigurable.kt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,16 @@ package software.aws.toolkits.jetbrains.services.codewhisperer.settings
55

66
import com.intellij.icons.AllIcons
77
import com.intellij.ide.DataManager
8+
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory
89
import com.intellij.openapi.options.BoundConfigurable
910
import com.intellij.openapi.options.Configurable
1011
import com.intellij.openapi.options.SearchableConfigurable
1112
import com.intellij.openapi.options.ex.Settings
1213
import com.intellij.openapi.project.Project
14+
import com.intellij.openapi.ui.emptyText
1315
import com.intellij.ui.components.ActionLink
1416
import com.intellij.ui.components.fields.ExpandableTextField
17+
import com.intellij.ui.dsl.builder.Align
1518
import com.intellij.ui.dsl.builder.bindIntText
1619
import com.intellij.ui.dsl.builder.bindSelected
1720
import com.intellij.ui.dsl.builder.bindText
@@ -24,6 +27,7 @@ import software.aws.toolkits.jetbrains.services.codewhisperer.credentials.CodeWh
2427
import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.CodeWhispererExplorerActionManager
2528
import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.isCodeWhispererEnabled
2629
import software.aws.toolkits.jetbrains.settings.CodeWhispererSettings
30+
import software.aws.toolkits.jetbrains.settings.LspSettings
2731
import software.aws.toolkits.resources.message
2832
import java.awt.Font
2933
import java.util.concurrent.TimeUnit
@@ -61,6 +65,25 @@ class CodeWhispererConfigurable(private val project: Project) :
6165
}
6266
}
6367

68+
group("LSP") {
69+
row("Select LSP Artifact") {
70+
val fileChooserDescriptor = FileChooserDescriptorFactory.createSingleFileDescriptor()
71+
.withExtensionFilter("js")
72+
fileChooserDescriptor.isForcedToUseIdeaFileChooser = true
73+
74+
textFieldWithBrowseButton(fileChooserDescriptor = fileChooserDescriptor)
75+
.bindText(
76+
{ LspSettings.getInstance().getArtifactPath() },
77+
{ LspSettings.getInstance().setExecutablePath(it.takeIf { v -> v.isNotBlank() }) }
78+
)
79+
.applyToComponent {
80+
emptyText.text = "Choose a file to upload"
81+
}
82+
.resizableColumn()
83+
.align(Align.FILL)
84+
}
85+
}
86+
6487
group(message("aws.settings.codewhisperer.group.inline_suggestions")) {
6588
row {
6689
checkBox(message("aws.settings.codewhisperer.include_code_with_reference")).apply {
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package software.aws.toolkits.jetbrains.settings
5+
6+
import com.intellij.openapi.components.PersistentStateComponent
7+
import com.intellij.openapi.components.Service
8+
import com.intellij.openapi.components.State
9+
import com.intellij.openapi.components.Storage
10+
import com.intellij.openapi.components.service
11+
import com.intellij.util.xmlb.annotations.Attribute
12+
13+
@Service
14+
@State(name = "lspSettings", storages = [Storage("aws.xml")])
15+
class LspSettings : PersistentStateComponent<LspConfiguration> {
16+
private var state = LspConfiguration()
17+
18+
override fun getState(): LspConfiguration = state
19+
20+
override fun loadState(state: LspConfiguration) {
21+
this.state = state
22+
}
23+
24+
fun getArtifactPath() = run {
25+
when {
26+
state.artifactPath == null -> ""
27+
else -> state.artifactPath.toString()
28+
}
29+
}
30+
31+
fun setExecutablePath(artifactPath: String?) {
32+
if (artifactPath == null) {
33+
state.artifactPath = ""
34+
} else {
35+
state.artifactPath = artifactPath
36+
}
37+
}
38+
39+
companion object {
40+
fun getInstance(): LspSettings = service()
41+
}
42+
}
43+
44+
data class LspConfiguration(
45+
@Attribute(value = "path")
46+
var artifactPath: String? = null,
47+
)

0 commit comments

Comments
 (0)