mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-04 23:39:07 +07:00
[python]: extract sdk set/get logic in the plugin to be reused internally
GitOrigin-RevId: 619bbe8d5a7988a1cf6516ea63bb2e502ae6afbe
This commit is contained in:
committed by
intellij-monorepo-bot
parent
f28bb6e5c8
commit
54991c6e94
@@ -12,48 +12,58 @@ import com.jetbrains.python.configuration.PyActiveSdkConfigurable
|
||||
import com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable
|
||||
import com.jetbrains.python.sdk.removeTransferredRoots
|
||||
import com.jetbrains.python.sdk.transferRoots
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
|
||||
internal class PyPluginSdkModuleConfigurable(project: Project?) : PyActiveSdkModuleConfigurable(project) {
|
||||
override fun createModuleConfigurable(module: Module): UnnamedConfigurable {
|
||||
return object : PyActiveSdkConfigurable(module) {
|
||||
override fun setSdk(item: Sdk?) {
|
||||
val facetManager = FacetManager.getInstance(module)
|
||||
val facet = facetManager.getFacetByType(MinorPythonFacet.ID)
|
||||
if (facet == null) {
|
||||
ApplicationManager.getApplication().runWriteAction {
|
||||
addFacet(facetManager, item, module)
|
||||
}
|
||||
}
|
||||
else {
|
||||
setFacetSdk(facet, item, module)
|
||||
}
|
||||
|
||||
setSdkToFacet(item, module)
|
||||
}
|
||||
|
||||
override fun getSdk(): Sdk? {
|
||||
val facetManager = FacetManager.getInstance(module)
|
||||
val facet = facetManager.getFacetByType(MinorPythonFacet.ID)
|
||||
return facet?.configuration?.sdk
|
||||
return getSdkFromFacet(module)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun setFacetSdk(facet: MinorPythonFacet,
|
||||
item: Sdk?,
|
||||
module: Module) {
|
||||
removeTransferredRoots(module, facet.configuration.sdk)
|
||||
facet.configuration.sdk = item
|
||||
transferRoots(module, item)
|
||||
|
||||
FacetManager.getInstance(module).facetConfigurationChanged(facet)
|
||||
PythonFacetUtil.updateLibrary(module, facet.configuration)
|
||||
@ApiStatus.Internal
|
||||
fun setSdkToFacet(item: Sdk?, module: Module) {
|
||||
val facetManager = FacetManager.getInstance(module)
|
||||
val facet = facetManager.getFacetByType(MinorPythonFacet.ID)
|
||||
if (facet == null) {
|
||||
ApplicationManager.getApplication().runWriteAction {
|
||||
addFacet(facetManager, item, module)
|
||||
}
|
||||
}
|
||||
|
||||
private fun addFacet(facetManager: FacetManager,
|
||||
sdk: Sdk?,
|
||||
module: Module) {
|
||||
val facet = facetManager.addFacet(
|
||||
MinorPythonFacetType.getInstance(), "Python facet", null)
|
||||
setFacetSdk(facet, sdk, module)
|
||||
else {
|
||||
setFacetSdk(facet, item, module)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
fun getSdkFromFacet(module: Module): Sdk? {
|
||||
val facetManager = FacetManager.getInstance(module)
|
||||
val facet = facetManager.getFacetByType(MinorPythonFacet.ID)
|
||||
return facet?.configuration?.sdk
|
||||
}
|
||||
|
||||
private fun setFacetSdk(facet: MinorPythonFacet,
|
||||
item: Sdk?,
|
||||
module: Module) {
|
||||
removeTransferredRoots(module, facet.configuration.sdk)
|
||||
facet.configuration.sdk = item
|
||||
transferRoots(module, item)
|
||||
|
||||
FacetManager.getInstance(module).facetConfigurationChanged(facet)
|
||||
PythonFacetUtil.updateLibrary(module, facet.configuration)
|
||||
}
|
||||
|
||||
private fun addFacet(facetManager: FacetManager,
|
||||
sdk: Sdk?,
|
||||
module: Module) {
|
||||
val facet = facetManager.addFacet(
|
||||
MinorPythonFacetType.getInstance(), "Python facet", null)
|
||||
setFacetSdk(facet, sdk, module)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user