Fully disable editing target platforms for HMPP modules. Show

java target platform version in Facets
This commit is contained in:
Andrey Uskov
2019-07-03 21:37:31 +03:00
parent c98ad923bd
commit f6f072693a
@@ -87,26 +87,15 @@ class KotlinFacetEditorGeneralTab(
// UI components related to MPP target platforms // UI components related to MPP target platforms
lateinit var targetPlatformSelectSingleCombobox: ComboBox<TargetPlatformWrapper> lateinit var targetPlatformSelectSingleCombobox: ComboBox<TargetPlatformWrapper>
lateinit var targetPlatformWrappers: List<TargetPlatformWrapper> lateinit var targetPlatformWrappers: List<TargetPlatformWrapper>
lateinit var targetPlatformSelectMultipleCheckboxes: Map<SimplePlatform, ThreeStateCheckBox> lateinit var targetPlatformLabel: JLabel //JTextField?
private fun isTargetPlatformForceEditable() = Registry.`is`("kotlin.mpp.editTargetPlatformEnabled") var targetPlatformsCurrentlySelected: TargetPlatform? = null
private lateinit var projectSettingsLink: HoverHyperlinkLabel private lateinit var projectSettingsLink: HoverHyperlinkLabel
private fun FormBuilder.addTargetPlatformComponents(): FormBuilder { private fun FormBuilder.addTargetPlatformComponents(): FormBuilder {
return if (configuration?.settings?.isHmppEnabled == true) { return if (configuration?.settings?.isHmppEnabled == true) {
val targetPlatformsPanel = JPanel() targetPlatformLabel.toolTipText = "The project is imported from external build system and could not be edited"
targetPlatformsPanel.layout = GridLayout(0, 1) this.addLabeledComponent("Selected target platforms:", targetPlatformLabel)
targetPlatformSelectMultipleCheckboxes.values.forEach {
targetPlatformsPanel.add(it)
it.isEnabled = isTargetPlatformForceEditable()
if (!isTargetPlatformForceEditable()) {
it.toolTipText = "The project is imported from external build system and could not be edited"
}
}
this.addComponent(JLabel("Selected target platforms:"))
this.addLabeledComponent("", targetPlatformsPanel)
} else { } else {
this.addLabeledComponent("&Target platform: ", targetPlatformSelectSingleCombobox) this.addLabeledComponent("&Target platform: ", targetPlatformSelectSingleCombobox)
} }
@@ -139,12 +128,9 @@ class KotlinFacetEditorGeneralTab(
) )
useProjectSettingsCheckBox = ThreeStateCheckBox("Use project settings").apply { isThirdStateEnabled = isMultiEditor } useProjectSettingsCheckBox = ThreeStateCheckBox("Use project settings").apply { isThirdStateEnabled = isMultiEditor }
targetPlatformSelectMultipleCheckboxes = CommonPlatforms targetPlatformWrappers =
.allSimplePlatforms CommonPlatforms.allDefaultTargetPlatforms.sortedBy { it.oldFashionedDescription }.map { TargetPlatformWrapper(it) }
.flatMap { it.componentPlatforms } targetPlatformLabel = JLabel() //JTextField()? targetPlatformLabel.isEditable = false
.sortedBy(SimplePlatform::platformName)
.associateWith { ThreeStateCheckBox(it.platformName).apply { isThirdStateEnabled = isMultiEditor } }
targetPlatformWrappers = CommonPlatforms.allDefaultTargetPlatforms.sortedBy { it.oldFashionedDescription }.map { TargetPlatformWrapper(it) }
targetPlatformSelectSingleCombobox = targetPlatformSelectSingleCombobox =
ComboBox(targetPlatformWrappers.toTypedArray()).apply { ComboBox(targetPlatformWrappers.toTypedArray()).apply {
setRenderer(object : DefaultListCellRenderer() { setRenderer(object : DefaultListCellRenderer() {
@@ -190,12 +176,6 @@ class KotlinFacetEditorGeneralTab(
useProjectSettingsCheckBox.addActionListener { useProjectSettingsCheckBox.addActionListener {
updateCompilerConfigurable() updateCompilerConfigurable()
} }
targetPlatformSelectMultipleCheckboxes.values.forEach {
it.addActionListener {
updateCompilerConfigurable()
}
}
targetPlatformSelectSingleCombobox.addActionListener { targetPlatformSelectSingleCombobox.addActionListener {
updateCompilerConfigurable() updateCompilerConfigurable()
} }
@@ -224,8 +204,7 @@ class KotlinFacetEditorGeneralTab(
fun getChosenPlatform(): TargetPlatform? { fun getChosenPlatform(): TargetPlatform? {
return if (configuration?.settings?.isHmppEnabled == true) { return if (configuration?.settings?.isHmppEnabled == true) {
val simplePlatforms = targetPlatformSelectMultipleCheckboxes.filter { it.value.isSelected }.map { it.key }.toSet() targetPlatformsCurrentlySelected
if (simplePlatforms.isEmpty()) null else TargetPlatform(simplePlatforms)
} else { } else {
targetPlatformSelectSingleCombobox.selectedItemTyped?.targetPlatform targetPlatformSelectSingleCombobox.selectedItemTyped?.targetPlatform
} }
@@ -349,9 +328,6 @@ class KotlinFacetEditorGeneralTab(
apiVersionComboBox.validateOnChange() apiVersionComboBox.validateOnChange()
coroutineSupportComboBox.validateOnChange() coroutineSupportComboBox.validateOnChange()
} }
editor.targetPlatformSelectMultipleCheckboxes.values.forEach {
it.validateOnChange()
}
editor.targetPlatformSelectSingleCombobox.validateOnChange() editor.targetPlatformSelectSingleCombobox.validateOnChange()
editor.updateCompilerConfigurable() editor.updateCompilerConfigurable()
@@ -389,9 +365,10 @@ class KotlinFacetEditorGeneralTab(
if (!isInitialized) return if (!isInitialized) return
validateOnce { validateOnce {
editor.useProjectSettingsCheckBox.isSelected = configuration.settings.useProjectSettings editor.useProjectSettingsCheckBox.isSelected = configuration.settings.useProjectSettings
editor.targetPlatformSelectMultipleCheckboxes.forEach { editor.targetPlatformsCurrentlySelected = configuration.settings.targetPlatform
it.value.isSelected = configuration.settings.targetPlatform?.contains(it.key) ?: false editor.targetPlatformLabel.text =
} editor.targetPlatformsCurrentlySelected?.componentPlatforms?.map { it.oldFashionedDescription }?.joinToString(", ")
?: "<none>"
editor.targetPlatformSelectSingleCombobox.selectedItem = configuration.settings.targetPlatform?.let { editor.targetPlatformSelectSingleCombobox.selectedItem = configuration.settings.targetPlatform?.let {
val index = editor.targetPlatformWrappers.indexOf(TargetPlatformWrapper(it)) val index = editor.targetPlatformWrappers.indexOf(TargetPlatformWrapper(it))
if (index >= 0) { if (index >= 0) {
@@ -412,7 +389,9 @@ class KotlinFacetEditorGeneralTab(
with(configuration.settings) { with(configuration.settings) {
useProjectSettings = editor.useProjectSettingsCheckBox.isSelected useProjectSettings = editor.useProjectSettingsCheckBox.isSelected
editor.getChosenPlatform()?.let { editor.getChosenPlatform()?.let {
if (it != targetPlatform) { if (it != targetPlatform ||
isModified // work-around due to hacked equals
) {
val platformArguments = when { val platformArguments = when {
it.isJvm() -> editor.compilerConfigurable.k2jvmCompilerArguments it.isJvm() -> editor.compilerConfigurable.k2jvmCompilerArguments
it.isJs() -> editor.compilerConfigurable.k2jsCompilerArguments it.isJs() -> editor.compilerConfigurable.k2jsCompilerArguments