Introduce KotlinOtherSettingsPanel

#KT-39180 Fixed
#KT-38036 Fixed
This commit is contained in:
Dmitry Gridin
2020-05-26 12:45:10 +07:00
parent 880658135f
commit bf6dffdf38
5 changed files with 82 additions and 5 deletions
@@ -511,6 +511,7 @@ formatter.button.text.use.import.with.when.at.least=Use import with '*' when at
formatter.button.text.use.import.with=Use import with '*'
formatter.button.text.use.single.name.import=Use single name import
formatter.checkbox.text.insert.imports.for.nested.classes=Insert imports for nested classes
formatter.checkbox.text.use.trailing.comma=Use trailing comma
formatter.text.names.used=\ names used
formatter.text.use.defaults.from=Use defaults from:
formatter.title.after.colon.before.declaration.type=After colon, before declaration type
@@ -534,6 +535,7 @@ formatter.title.in.simple.one.line.methods=In simple one line methods
formatter.title.java.statics.and.enum.members=Java Statics and Enum Members
formatter.title.load.save=Load/Save
formatter.title.other=Other
formatter.title.trailing.comma=Trailing comma
formatter.title.property.annotations=Property annotations
formatter.title.put.left.brace.on.new.line=Put left brace on new line
formatter.title.range.operator=Range operator (..)
+15 -3
View File
@@ -618,6 +618,11 @@
<option name="continuation" path="Tabs and Indents" hit="Continuation indent:"/>
<option name="indent" path="Tabs and Indents" hit="Continuation indent:"/>
<option name="disable" hit="Disable"/>
<option name="import" path="Imports" hit="Import Layout"/>
<option name="layout" path="Imports" hit="Import Layout"/>
<option name="aliases" path="Imports" hit="Import aliases separately"/>
<option name="import" path="Imports" hit="Import aliases separately"/>
<option name="separately" path="Imports" hit="Import aliases separately"/>
<option name="imports" path="Imports" hit="Imports"/>
<option name="code" path="Blank Lines" hit="In code:"/>
<option name="in" path="Blank Lines" hit="In code:"/>
@@ -664,6 +669,11 @@
<option name="lines" path="Blank Lines" hit="Minimum Blank Lines"/>
<option name="minimum" path="Blank Lines" hit="Minimum Blank Lines"/>
<option name="other" path="Imports" hit="Other"/>
<option name="import" path="Imports" hit="Packages to Use Import with '*'"/>
<option name="packages" path="Imports" hit="Packages to Use Import with '*'"/>
<option name="to" path="Imports" hit="Packages to Use Import with '*'"/>
<option name="use" path="Imports" hit="Packages to Use Import with '*'"/>
<option name="with" path="Imports" hit="Packages to Use Import with '*'"/>
<option name="scheme" hit="Scheme:"/>
<option name="from" hit="Set from..."/>
<option name="set" hit="Set from..."/>
@@ -677,6 +687,8 @@
<option name="tabs" path="Tabs and Indents" hit="Tabs and Indents"/>
<option name="symbols" path="Imports" hit="Top-level Symbols"/>
<option name="top-level" path="Imports" hit="Top-level Symbols"/>
<option name="comma" path="Other" hit="Trailing comma"/>
<option name="trailing" path="Other" hit="Trailing comma"/>
<option name="defaults" path="Load/Save" hit="Use defaults from:"/>
<option name="from" path="Load/Save" hit="Use defaults from:"/>
<option name="use" path="Load/Save" hit="Use defaults from:"/>
@@ -696,6 +708,9 @@
<option name="character" path="Tabs and Indents" hit="Use tab character"/>
<option name="tab" path="Tabs and Indents" hit="Use tab character"/>
<option name="use" path="Tabs and Indents" hit="Use tab character"/>
<option name="comma" path="Other" hit="Use trailing comma"/>
<option name="trailing" path="Other" hit="Use trailing comma"/>
<option name="use" path="Other" hit="Use trailing comma"/>
<option name="and" path="Wrapping and Braces" hit="Wrapping and Braces"/>
<option name="braces" path="Wrapping and Braces" hit="Wrapping and Braces"/>
<option name="wrapping" path="Wrapping and Braces" hit="Wrapping and Braces"/>
@@ -1044,9 +1059,6 @@
<option name="in" path="Wrapping and Braces" hit="Use continuation indent in conditions"/>
<option name="indent" path="Wrapping and Braces" hit="Use continuation indent in conditions"/>
<option name="use" path="Wrapping and Braces" hit="Use continuation indent in conditions"/>
<option name="comma" path="Wrapping and Braces" hit="Use trailing comma"/>
<option name="trailing" path="Wrapping and Braces" hit="Use trailing comma"/>
<option name="use" path="Wrapping and Braces" hit="Use trailing comma"/>
<option name="guides" path="Wrapping and Braces" hit="Visual guides"/>
<option name="visual" path="Wrapping and Braces" hit="Visual guides"/>
<option name="after" path="Wrapping and Braces" hit="Wrap after modifier list"/>
@@ -16,6 +16,7 @@ class KotlinCodeStylePanel(currentSettings: CodeStyleSettings, settings: CodeSty
super.initTabs(settings)
addTab(ImportSettingsPanelWrapper(settings))
addTab(KotlinOtherSettingsPanel(settings))
for (provider in CodeStyleSettingsProvider.EXTENSION_POINT_NAME.extensions) {
if (provider.language == KotlinLanguage.INSTANCE && !provider.hasSettingsPage()) {
createTab(provider)
@@ -172,8 +172,6 @@ class KotlinLanguageCodeStyleSettingsProvider : LanguageCodeStyleSettingsProvide
KotlinBundle.message("formatter.title.function.parentheses")
)
showCustomOption(KotlinCodeStyleSettings::ALLOW_TRAILING_COMMA, "Use trailing comma")
showCustomOption(
KotlinCodeStyleSettings::ALIGN_IN_COLUMNS_CASE_BRANCH,
KotlinBundle.message("formatter.title.align.when.branches.in.columns"),
@@ -0,0 +1,64 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.idea.formatter
import com.intellij.application.options.CodeStyleAbstractPanel
import com.intellij.openapi.editor.colors.EditorColorsScheme
import com.intellij.psi.codeStyle.CodeStyleSettings
import com.intellij.ui.OptionGroup
import com.intellij.ui.components.JBScrollPane
import com.intellij.ui.components.panels.VerticalLayout
import com.intellij.util.ui.JBUI
import com.intellij.util.ui.UIUtil
import org.jetbrains.kotlin.idea.KotlinBundle
import org.jetbrains.kotlin.idea.KotlinLanguage
import java.awt.BorderLayout
import javax.swing.BorderFactory
import javax.swing.JCheckBox
import javax.swing.JPanel
class KotlinOtherSettingsPanel(settings: CodeStyleSettings) : CodeStyleAbstractPanel(KotlinLanguage.INSTANCE, null, settings) {
private val cbTrailingComma = JCheckBox(KotlinBundle.message("formatter.checkbox.text.use.trailing.comma"))
override fun getRightMargin() = throw UnsupportedOperationException()
override fun createHighlighter(scheme: EditorColorsScheme) = throw UnsupportedOperationException()
override fun getFileType() = throw UnsupportedOperationException()
override fun getPreviewText(): String? = null
override fun apply(settings: CodeStyleSettings) {
settings.kotlinCustomSettings.ALLOW_TRAILING_COMMA = cbTrailingComma.isSelected
}
override fun isModified(settings: CodeStyleSettings): Boolean {
return settings.kotlinCustomSettings.ALLOW_TRAILING_COMMA != cbTrailingComma.isSelected
}
override fun getPanel() = jPanel
override fun resetImpl(settings: CodeStyleSettings) {
cbTrailingComma.isSelected = settings.kotlinCustomSettings.ALLOW_TRAILING_COMMA
}
override fun getTabTitle(): String = KotlinBundle.message("formatter.title.other")
private val jPanel = JPanel(BorderLayout()).apply {
add(
JBScrollPane(
JPanel(VerticalLayout(JBUI.scale(5))).apply {
border = BorderFactory.createEmptyBorder(UIUtil.DEFAULT_VGAP, 10, UIUtil.DEFAULT_VGAP, 10)
add(
OptionGroup(KotlinBundle.message("formatter.title.trailing.comma")).apply {
add(cbTrailingComma)
}.createPanel()
)
}
)
)
}
}