Refactoring: introduce method for reuse file for single class logic

This commit is contained in:
Nikolay Krasko
2017-12-14 18:59:51 +03:00
parent 5c33e4a32d
commit 26413acf33
2 changed files with 9 additions and 7 deletions
@@ -35,8 +35,8 @@ import javax.swing.Icon
class KotlinIconProvider : IconProvider(), DumbAware { class KotlinIconProvider : IconProvider(), DumbAware {
override fun getIcon(psiElement: PsiElement, flags: Int): Icon? { override fun getIcon(psiElement: PsiElement, flags: Int): Icon? {
if (psiElement is KtFile) { if (psiElement is KtFile) {
val mainClass = getMainClass(psiElement) val mainClass = getSingleClass(psiElement)
return if (mainClass != null && psiElement.declarations.size == 1) getIcon(mainClass, flags) else KotlinIcons.FILE return if (mainClass != null) getIcon(mainClass, flags) else KotlinIcons.FILE
} }
val result = psiElement.getBaseIcon() val result = psiElement.getBaseIcon()
@@ -48,9 +48,13 @@ class KotlinIconProvider : IconProvider(), DumbAware {
} }
companion object { companion object {
var INSTANCE = KotlinIconProvider() var INSTANCE = KotlinIconProvider()
fun getSingleClass(file: KtFile): KtClassOrObject? {
val mainClass = getMainClass(file)
return if (mainClass != null && file.declarations.size == 1) mainClass else null
}
fun getMainClass(file: KtFile): KtClassOrObject? { fun getMainClass(file: KtFile): KtClassOrObject? {
val classes = file.declarations.filterIsInstance<KtClassOrObject>() val classes = file.declarations.filterIsInstance<KtClassOrObject>()
if (classes.size == 1 && StringUtil.getPackageName(file.name) == classes[0].name) { if (classes.size == 1 && StringUtil.getPackageName(file.name) == classes[0].name) {
@@ -49,10 +49,8 @@ class KotlinExpandNodeProjectViewProvider : TreeStructureProvider, DumbAware {
val childValue = child.value?.asKtFile() val childValue = child.value?.asKtFile()
if (childValue != null) { if (childValue != null) {
val declarations = childValue.declarations val mainClass = KotlinIconProvider.getSingleClass(childValue)
if (mainClass != null) {
val mainClass = KotlinIconProvider.getMainClass(childValue)
if (mainClass != null && declarations.size == 1) {
result.add(KtClassOrObjectTreeNode(childValue.project, mainClass, settings)) result.add(KtClassOrObjectTreeNode(childValue.project, mainClass, settings))
} }
else { else {