33
44package software.aws.toolkits.jetbrains.services.lambda.python
55
6+ import com.intellij.ide.util.projectWizard.WizardContext
7+ import com.intellij.ide.wizard.NewProjectWizardStep
8+ import com.intellij.openapi.observable.properties.PropertyGraph
69import com.intellij.openapi.projectRoots.Sdk
7- import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil
810import com.intellij.openapi.ui.TextFieldWithBrowseButton
911import com.intellij.openapi.ui.ValidationInfo
10- import com.intellij.ui.DocumentAdapter
12+ import com.intellij.openapi.util.UserDataHolder
13+ import com.intellij.ui.dsl.builder.panel
1114import com.jetbrains.python.configuration.PyConfigurableInterpreterList
12- import com.jetbrains.python.newProject.steps.PyAddExistingSdkPanel
13- import com.jetbrains.python.newProject.steps.PyAddNewEnvironmentPanel
15+ import com.jetbrains.python.newProject.NewPythonProjectStep
1416import com.jetbrains.python.sdk.PreferredSdkComparator
15- import com.jetbrains.python.sdk.PySdkSettings
1617import com.jetbrains.python.sdk.PythonSdkType
1718import com.jetbrains.python.sdk.PythonSdkUtil
18- import com.jetbrains.python.sdk.add.PyAddSdkGroupPanel
1919import software.aws.toolkits.jetbrains.services.lambda.wizard.SdkSelector
2020import javax.swing.JComponent
2121import javax.swing.JLabel
22- import javax.swing.event.DocumentEvent
2322
2423class PyCharmSdkSelectionPanel (private val projectLocation : TextFieldWithBrowseButton ? ) : SdkSelector {
25- private val sdkPanel by lazy {
26- sdkPanel()
27- }
24+ // private val sdkPanel by lazy {
25+ // sdkPanel()
26+ // }
2827
29- override fun sdkSelectionPanel (): JComponent = sdkPanel
3028
31- override fun sdkSelectionLabel (): JLabel ? = null
29+ private val sdkStep by lazy {
30+ NewPythonProjectStep (object : NewProjectWizardStep {
31+ override val context: WizardContext
32+ get() = TODO (" Not yet implemented" )
33+ override val propertyGraph: PropertyGraph
34+ get() = TODO (" Not yet implemented" )
35+ override val keywords: NewProjectWizardStep .Keywords
36+ get() = TODO (" Not yet implemented" )
37+ override val data: UserDataHolder
38+ get() = TODO (" Not yet implemented" )
3239
33- private fun sdkPanel (): PyAddSdkGroupPanel {
34- // Based on PyCharm's ProjectSpecificSettingsStep
35- val existingSdks = getValidPythonSdks()
36- val newProjectLocation = getProjectLocation()
37- val newEnvironmentPanel = PyAddNewEnvironmentPanel (existingSdks, newProjectLocation, null )
38- val existingSdkPanel = PyAddExistingSdkPanel (null , null , existingSdks, newProjectLocation, existingSdks.firstOrNull())
40+ })
41+ }
3942
40- val defaultPanel = if (PySdkSettings .instance.useNewEnvironmentForNewProject) newEnvironmentPanel else existingSdkPanel
43+ private val sdkPanel by lazy {
44+ panel {
45+ sdkStep.setupUI(this )
46+ }
47+ }
4148
42- val interpreterPanel = createPythonSdkPanel( listOf (newEnvironmentPanel, existingSdkPanel), defaultPanel)
49+ override fun sdkSelectionPanel (): JComponent = sdkPanel
4350
44- projectLocation?.textField?.document?.addDocumentListener(
45- object : DocumentAdapter () {
46- override fun textChanged (e : DocumentEvent ) {
47- interpreterPanel.newProjectPath = getProjectLocation()
48- }
49- }
50- )
51+ override fun sdkSelectionLabel (): JLabel ? = null
5152
52- return interpreterPanel
53- }
53+ // private fun sdkPanel(): PyAddSdkGroupPanel {
54+ // // Based on PyCharm's ProjectSpecificSettingsStep
55+ // val existingSdks = getValidPythonSdks()
56+ // val newProjectLocation = getProjectLocation()
57+ // val newEnvironmentPanel = PyAddNewEnvironmentPanel(existingSdks, newProjectLocation, null as String?)
58+ // val existingSdkPanel = PyAddExistingSdkPanel(null, null, existingSdks, newProjectLocation, existingSdks.firstOrNull())
59+ //
60+ // val defaultPanel = if (PySdkSettings.instance.useNewEnvironmentForNewProject) newEnvironmentPanel else existingSdkPanel
61+ // PyAddSdkGroupPanel()
62+ // val interpreterPanel = createPythonSdkPanel(listOf(newEnvironmentPanel, existingSdkPanel), defaultPanel)
63+ //
64+ // projectLocation?.textField?.document?.addDocumentListener(
65+ // object : DocumentAdapter() {
66+ // override fun textChanged(e: DocumentEvent) {
67+ // interpreterPanel.newProjectPath = getProjectLocation()
68+ // }
69+ // }
70+ // )
71+ //
72+ // return interpreterPanel
73+ // }
5474
5575 private fun getProjectLocation (): String? = projectLocation?.text?.trim()
5676
@@ -61,11 +81,7 @@ class PyCharmSdkSelectionPanel(private val projectLocation: TextFieldWithBrowseB
6181 .toList()
6282
6383 override fun getSdk (): Sdk ? {
64- val sdk = sdkPanel.getOrCreateSdk() ? : return null
65- if (sdkPanel.selectedPanel is PyAddNewEnvironmentPanel ) {
66- SdkConfigurationUtil .addSdk(sdk)
67- }
68- return sdk
84+ return sdkStep.pythonSdk
6985 }
7086
7187 override fun validateSelection (): ValidationInfo ? = sdkPanel.validateAll().firstOrNull()
0 commit comments