diff --git a/idea/src/META-INF/extensions/common.xml b/idea/src/META-INF/extensions/common.xml index 6f218b727ef..bf32bf2d7e3 100644 --- a/idea/src/META-INF/extensions/common.xml +++ b/idea/src/META-INF/extensions/common.xml @@ -34,5 +34,7 @@ + diff --git a/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetConfiguration.kt b/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetConfiguration.kt index 83a4c134e11..ec1fd5fef0e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetConfiguration.kt +++ b/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetConfiguration.kt @@ -21,8 +21,10 @@ import com.intellij.facet.ui.FacetEditorContext import com.intellij.facet.ui.FacetEditorTab import com.intellij.facet.ui.FacetValidatorsManager import com.intellij.openapi.components.PersistentStateComponent +import com.intellij.openapi.util.Key import org.jdom.Element import org.jetbrains.kotlin.idea.util.DescriptionAware +import java.util.* class KotlinFacetConfiguration : FacetConfiguration, PersistentStateComponent { enum class LanguageLevel(override val description: String) : DescriptionAware { @@ -62,5 +64,9 @@ class KotlinFacetConfiguration : FacetConfiguration, PersistentStateComponent = arrayOf(KotlinFacetEditorTab(this, editorContext, validatorsManager)) + ): Array { + val tabs = arrayListOf(KotlinFacetEditorTab(this, editorContext, validatorsManager)) + KotlinFacetConfigurationExtension.EP_NAME.extensions.flatMapTo(tabs) { it.createEditorTabs(editorContext, validatorsManager) } + return tabs.toTypedArray() + } } diff --git a/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetConfigurationExtension.kt b/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetConfigurationExtension.kt new file mode 100644 index 00000000000..91d0b88d9a6 --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetConfigurationExtension.kt @@ -0,0 +1,30 @@ +/* + * Copyright 2010-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.idea.facet + +import com.intellij.facet.ui.FacetEditorContext +import com.intellij.facet.ui.FacetEditorTab +import com.intellij.facet.ui.FacetValidatorsManager +import com.intellij.openapi.extensions.ExtensionPointName + +interface KotlinFacetConfigurationExtension { + companion object { + val EP_NAME: ExtensionPointName = ExtensionPointName.create("org.jetbrains.kotlin.facetConfigurationExtension")!! + } + + fun createEditorTabs(editorContext: FacetEditorContext, validatorsManager: FacetValidatorsManager): List +} diff --git a/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorTab.kt b/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorTab.kt index 2f688ebfce2..84bd3742c8f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorTab.kt +++ b/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorTab.kt @@ -146,7 +146,7 @@ class KotlinFacetEditorTab( configuration.state.targetPlatformKind = targetPlatformComboBox.selectedItem as KotlinFacetConfiguration.TargetPlatform? } - override fun getDisplayName() = "Kotlin" + override fun getDisplayName() = "General" override fun createComponent(): JComponent { val mainPanel = JPanel(BorderLayout())