From e8749e639c5ab1443749b12bc6750d3124b3e2fc Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Fri, 10 Mar 2017 21:38:11 +0300 Subject: [PATCH] Kotlin Facet: Add link to project-level compiler settings UI #KT-16022 Fixed --- .../idea/facet/KotlinFacetEditorGeneralTab.kt | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt b/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt index 1ef1c6e573d..f6dbe69d07a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt +++ b/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt @@ -19,10 +19,13 @@ package org.jetbrains.kotlin.idea.facet import com.intellij.facet.impl.ui.libraries.DelegatingLibrariesValidatorContext import com.intellij.facet.ui.* import com.intellij.facet.ui.libraries.FrameworkLibraryValidator +import com.intellij.ide.actions.ShowSettingsUtilImpl import com.intellij.openapi.project.Project import com.intellij.ui.DocumentAdapter +import com.intellij.ui.HoverHyperlinkLabel import com.intellij.util.ui.FormBuilder import com.intellij.util.ui.ThreeStateCheckBox +import com.intellij.util.ui.UIUtil import org.jetbrains.kotlin.cli.common.arguments.* import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.idea.compiler.configuration.* @@ -30,6 +33,7 @@ import java.awt.BorderLayout import javax.swing.JComboBox import javax.swing.JComponent import javax.swing.JPanel +import javax.swing.border.EmptyBorder import javax.swing.event.DocumentEvent class KotlinFacetEditorGeneralTab( @@ -87,10 +91,23 @@ class KotlinFacetEditorGeneralTab( setRenderer(DescriptionListCellRenderer()) } + private val projectSettingsLink = HoverHyperlinkLabel("Edit project settings").apply { + addHyperlinkListener { + ShowSettingsUtilImpl.showSettingsDialog(project, compilerConfigurable.id, "") + if (useProjectSettingsCheckBox.isSelected) { + updateCompilerConfigurable() + } + } + } + init { val contentPanel = FormBuilder .createFormBuilder() - .addComponent(useProjectSettingsCheckBox) + .addComponent(JPanel(BorderLayout()).apply { + border = EmptyBorder(0, 0, UIUtil.DEFAULT_VGAP, UIUtil.DEFAULT_VGAP) + add(useProjectSettingsCheckBox, BorderLayout.WEST) + add(projectSettingsLink, BorderLayout.EAST) + }) .addLabeledComponent("&Target platform: ", targetPlatformComboBox) .addComponent(compilerConfigurable.createComponent()!!) .panel @@ -250,15 +267,7 @@ class KotlinFacetEditorGeneralTab( override fun getDisplayName() = "General" override fun createComponent(): JComponent { - val mainPanel = JPanel(BorderLayout()) - val contentPanel = FormBuilder - .createFormBuilder() - .addComponent(editor.useProjectSettingsCheckBox) - .addLabeledComponent("&Target platform: ", editor.targetPlatformComboBox) - .addComponent(editor.compilerConfigurable.createComponent()!!) - .panel - mainPanel.add(contentPanel, BorderLayout.NORTH) - return mainPanel + return editor } override fun disposeUIResources() {