2 * Copyright 2000-2017 JetBrains s.r.o.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package com.jetbrains.python.sdk
18 import com.intellij.facet.FacetManager
19 import com.intellij.openapi.application.ApplicationManager
20 import com.intellij.openapi.module.Module
21 import com.intellij.openapi.options.UnnamedConfigurable
22 import com.intellij.openapi.project.Project
23 import com.intellij.openapi.projectRoots.Sdk
24 import com.jetbrains.python.configuration.PyActiveSdkConfigurable
25 import com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable
26 import com.jetbrains.python.facet.PythonFacet
27 import com.jetbrains.python.facet.PythonFacetType
28 import com.jetbrains.python.facet.PythonFacetUtil
35 class PyPluginSdkModuleConfigurable(project: Project?) : PyActiveSdkModuleConfigurable(project) {
36 override fun createModuleConfigurable(module: Module): UnnamedConfigurable {
37 return object : PyActiveSdkConfigurable(module) {
38 override fun setSdk(item: Sdk?) {
39 val facetManager = FacetManager.getInstance(module)
40 val facet = facetManager.getFacetByType(PythonFacet.ID)
42 ApplicationManager.getApplication().runWriteAction {
43 addFacet(facetManager, item, module)
47 setFacetSdk(facet, item, module)
52 override fun getSdk(): Sdk? {
53 val facetManager = FacetManager.getInstance(module)
54 val facet = facetManager.getFacetByType(PythonFacet.ID)
55 return facet?.configuration?.sdk
60 private fun setFacetSdk(facet: PythonFacet,
63 facet.configuration.sdk = item
64 PythonFacetUtil.updateLibrary(module, facet.configuration)
67 private fun addFacet(facetManager: FacetManager,
70 val facet = facetManager.addFacet(PythonFacetType.getInstance(), "Python facet", null)
71 setFacetSdk(facet, sdk, module)