Can't add import for using with '*' in settings (KT-22570)

#KT-22570 Fixed
This commit is contained in:
Nikolay Krasko
2018-01-29 16:35:46 +03:00
parent 894db730b2
commit 607fa30c5a
@@ -65,7 +65,7 @@ class ImportSettingsPanel(private val commonSettings: CodeStyleSettings) : JPane
private val starImportPackageEntryTable = PackageEntryTable()
private val dummyImportLayoutPanel = object : ImportLayoutPanel() {
override fun areStaticImportsEnabled() = false
override fun refresh() { }
override fun refresh() {}
}
private val starImportPackageTable = ImportLayoutPanel.createTableForPackageEntries(starImportPackageEntryTable, dummyImportLayoutPanel)
@@ -109,15 +109,11 @@ class ImportSettingsPanel(private val commonSettings: CodeStyleSettings) : JPane
}
}
fun apply(settings: KotlinCodeStyleSettings, dropEmptyPackages: Boolean = true) {
fun apply(settings: KotlinCodeStyleSettings) {
settings.NAME_COUNT_TO_USE_STAR_IMPORT = nameCountToUseStarImportSelector.value
settings.NAME_COUNT_TO_USE_STAR_IMPORT_FOR_MEMBERS = nameCountToUseStarImportForMembersSelector.value
settings.IMPORT_NESTED_CLASSES = cbImportNestedClasses.isSelected
if (dropEmptyPackages) {
starImportPackageEntryTable.removeEmptyPackages()
}
settings.PACKAGES_TO_USE_STAR_IMPORTS.copyFrom(starImportPackageEntryTable)
settings.PACKAGES_TO_USE_STAR_IMPORTS.copyFrom(getCopyWithoutEmptyPackages(starImportPackageEntryTable))
}
fun isModified(settings: KotlinCodeStyleSettings): Boolean {
@@ -126,7 +122,7 @@ class ImportSettingsPanel(private val commonSettings: CodeStyleSettings) : JPane
isModified = isModified || nameCountToUseStarImportSelector.value != NAME_COUNT_TO_USE_STAR_IMPORT
isModified = isModified || nameCountToUseStarImportForMembersSelector.value != NAME_COUNT_TO_USE_STAR_IMPORT_FOR_MEMBERS
isModified = isModified || isModified(cbImportNestedClasses, IMPORT_NESTED_CLASSES)
isModified = isModified || isModified(starImportPackageEntryTable, PACKAGES_TO_USE_STAR_IMPORTS)
isModified = isModified || isModified(getCopyWithoutEmptyPackages(starImportPackageEntryTable), PACKAGES_TO_USE_STAR_IMPORTS)
isModified
}
@@ -152,6 +148,16 @@ class ImportSettingsPanel(private val commonSettings: CodeStyleSettings) : JPane
return false
}
private fun getCopyWithoutEmptyPackages(table: PackageEntryTable): PackageEntryTable {
try {
val copy = table.clone() as PackageEntryTable
copy.removeEmptyPackages()
return copy
} catch (ignored: CloneNotSupportedException) {
throw IllegalStateException("Clone should be supported")
}
}
}
private class NameCountToUseStarImportSelector(title: String) : OptionGroup(title) {
@@ -193,17 +199,17 @@ class ImportSettingsPanel(private val commonSettings: CodeStyleSettings) : JPane
else -> starImportLimitModel.number as Int
}
}
set(value) {
when (value) {
Int.MAX_VALUE -> rbUseSingleImports.isSelected = true
set(value) {
when (value) {
Int.MAX_VALUE -> rbUseSingleImports.isSelected = true
1 -> rbUseStarImports.isSelected = true
1 -> rbUseStarImports.isSelected = true
else -> {
rbUseStarImportsIfAtLeast.isSelected = true
starImportLimitField.value = value
}
}
}
else -> {
rbUseStarImportsIfAtLeast.isSelected = true
starImportLimitField.value = value
}
}
}
}
}