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())