Skip to content

Commit 7abd2d4

Browse files
committed
build
1 parent 2150338 commit 7abd2d4

File tree

4 files changed

+39
-48
lines changed

4 files changed

+39
-48
lines changed

plugins/toolkit/intellij-standalone/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ dependencies {
2222
intellijPlatform {
2323
localPlugin(project(":plugin-core"))
2424
pluginModule(project(":plugin-toolkit:jetbrains-core"))
25+
26+
plugin("PythonCore:243.18137.10")
2527
}
2628
}
2729

plugins/toolkit/jetbrains-core/src-243+/software/aws/toolkits/jetbrains/services/lambda/python/PyCharmSdkSelectionPanel.kt

Lines changed: 22 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@
44
package software.aws.toolkits.jetbrains.services.lambda.python
55

66
import com.intellij.ide.util.projectWizard.WizardContext
7+
import com.intellij.ide.wizard.NewProjectWizardBaseData
78
import com.intellij.ide.wizard.NewProjectWizardStep
89
import com.intellij.openapi.observable.properties.PropertyGraph
9-
import com.intellij.openapi.projectRoots.Sdk
10+
import com.intellij.openapi.roots.ModifiableRootModel
1011
import com.intellij.openapi.ui.TextFieldWithBrowseButton
1112
import com.intellij.openapi.ui.ValidationInfo
12-
import com.intellij.openapi.util.UserDataHolder
13+
import com.intellij.openapi.util.UserDataHolderBase
1314
import com.intellij.ui.dsl.builder.panel
1415
import com.jetbrains.python.newProject.NewPythonProjectStep
1516
import software.aws.toolkits.jetbrains.services.lambda.wizard.SdkSelector
@@ -18,20 +19,24 @@ import javax.swing.JLabel
1819

1920
@Suppress("UnusedPrivateProperty")
2021
class PyCharmSdkSelectionPanel(private val projectLocation: TextFieldWithBrowseButton?) : SdkSelector {
21-
// private val sdkPanel by lazy {
22-
// sdkPanel()
23-
// }
24-
2522
private val sdkStep by lazy {
23+
val graph = PropertyGraph()
2624
NewPythonProjectStep(object : NewProjectWizardStep {
27-
override val context: WizardContext
28-
get() = TODO("Not yet implemented")
29-
override val propertyGraph: PropertyGraph
30-
get() = TODO("Not yet implemented")
31-
override val keywords: NewProjectWizardStep.Keywords
32-
get() = TODO("Not yet implemented")
33-
override val data: UserDataHolder
34-
get() = TODO("Not yet implemented")
25+
override val context = WizardContext(null, null)
26+
override val propertyGraph: PropertyGraph = graph
27+
override val keywords = NewProjectWizardStep.Keywords()
28+
override val data = UserDataHolderBase().apply {
29+
putUserData(
30+
NewProjectWizardBaseData.KEY,
31+
object : NewProjectWizardBaseData {
32+
override val nameProperty = graph.property("")
33+
override val pathProperty = graph.property(projectLocation?.text?.trim() ?: "")
34+
35+
override var name by nameProperty
36+
override var path by pathProperty
37+
}
38+
)
39+
}
3540
})
3641
}
3742

@@ -45,38 +50,9 @@ class PyCharmSdkSelectionPanel(private val projectLocation: TextFieldWithBrowseB
4550

4651
override fun sdkSelectionLabel(): JLabel? = null
4752

48-
// private fun sdkPanel(): PyAddSdkGroupPanel {
49-
// // Based on PyCharm's ProjectSpecificSettingsStep
50-
// val existingSdks = getValidPythonSdks()
51-
// val newProjectLocation = getProjectLocation()
52-
// val newEnvironmentPanel = PyAddNewEnvironmentPanel(existingSdks, newProjectLocation, null as String?)
53-
// val existingSdkPanel = PyAddExistingSdkPanel(null, null, existingSdks, newProjectLocation, existingSdks.firstOrNull())
54-
//
55-
// val defaultPanel = if (PySdkSettings.instance.useNewEnvironmentForNewProject) newEnvironmentPanel else existingSdkPanel
56-
// PyAddSdkGroupPanel()
57-
// val interpreterPanel = createPythonSdkPanel(listOf(newEnvironmentPanel, existingSdkPanel), defaultPanel)
58-
//
59-
// projectLocation?.textField?.document?.addDocumentListener(
60-
// object : DocumentAdapter() {
61-
// override fun textChanged(e: DocumentEvent) {
62-
// interpreterPanel.newProjectPath = getProjectLocation()
63-
// }
64-
// }
65-
// )
66-
//
67-
// return interpreterPanel
68-
// }
69-
//
70-
// private fun getProjectLocation(): String? = projectLocation?.text?.trim()
71-
//
72-
// private fun getValidPythonSdks(): List<Sdk> = PyConfigurableInterpreterList.getInstance(null).allPythonSdks
73-
// .asSequence()
74-
// .filter { it.sdkType is PythonSdkType && !PythonSdkUtil.isInvalid(it) }
75-
// .sortedWith(PreferredSdkComparator())
76-
// .toList()
77-
78-
override fun getSdk(): Sdk? =
79-
sdkStep.pythonSdk
53+
override fun applySdkSettings(model: ModifiableRootModel) {
54+
sdkStep.setupProject(model.project)
55+
}
8056

8157
override fun validateSelection(): ValidationInfo? = sdkPanel.validateAll().firstOrNull()
8258
}

plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/wizard/SamProjectGenerator.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,11 @@ class SamProjectGeneratorSettingsPeer(val generator: SamProjectGenerator, privat
106106
/**
107107
* This hook is used in PyCharm and is called via {@link SamProjectBuilder#modifySettingsStep} for IntelliJ
108108
*/
109-
override fun validate(): ValidationInfo? = samInitSelectionPanel.validate()
109+
override fun validate(): ValidationInfo? = if (!::samInitSelectionPanel.isInitialized) {
110+
null
111+
} else {
112+
samInitSelectionPanel.validate()
113+
}
110114

111115
override fun getSettings(): SamNewProjectSettings = samInitSelectionPanel.getNewProjectSettings()
112116

plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/wizard/SdkSelectionPanel.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ package software.aws.toolkits.jetbrains.services.lambda.wizard
66
import com.intellij.openapi.application.ApplicationManager
77
import com.intellij.openapi.application.WriteAction
88
import com.intellij.openapi.progress.ProgressIndicator
9+
import com.intellij.openapi.projectRoots.ProjectJdkTable
910
import com.intellij.openapi.projectRoots.Sdk
11+
import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil
1012
import com.intellij.openapi.roots.ModifiableRootModel
1113
import com.intellij.openapi.roots.ProjectRootManager
1214
import com.intellij.openapi.ui.TextFieldWithBrowseButton
@@ -29,12 +31,19 @@ interface SdkSelector {
2931
fun sdkSelectionLabel(): JLabel?
3032

3133
fun applySdkSettings(model: ModifiableRootModel) {
32-
val sdk = getSdk() ?: return
34+
var sdk = getSdk() ?: return
3335
val project = model.project
3436

3537
val projectRootManager = ProjectRootManager.getInstance(project)
3638
WriteAction.runAndWait(
3739
ThrowableRunnable<Exception> {
40+
val existingSdk = ProjectJdkTable.getInstance().findJdk(sdk.name)
41+
if (existingSdk != null) {
42+
sdk = existingSdk
43+
} else {
44+
SdkConfigurationUtil.addSdk(sdk)
45+
}
46+
3847
if (projectRootManager.projectSdk == null) {
3948
projectRootManager.projectSdk = sdk
4049
}

0 commit comments

Comments
 (0)