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 {
override fun getIcon(psiElement: PsiElement, flags: Int): Icon? {
if (psiElement is KtFile) {
val mainClass = getMainClass(psiElement)
return if (mainClass != null && psiElement.declarations.size == 1) getIcon(mainClass, flags) else KotlinIcons.FILE
val mainClass = getSingleClass(psiElement)
return if (mainClass != null) getIcon(mainClass, flags) else KotlinIcons.FILE
}
val result = psiElement.getBaseIcon()
@@ -48,9 +48,13 @@ class KotlinIconProvider : IconProvider(), DumbAware {
}
companion object {
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? {
val classes = file.declarations.filterIsInstance<KtClassOrObject>()
if (classes.size == 1 && StringUtil.getPackageName(file.name) == classes[0].name) {
@@ -49,10 +49,8 @@ class KotlinExpandNodeProjectViewProvider : TreeStructureProvider, DumbAware {
val childValue = child.value?.asKtFile()
if (childValue != null) {
val declarations = childValue.declarations
val mainClass = KotlinIconProvider.getMainClass(childValue)
if (mainClass != null && declarations.size == 1) {
val mainClass = KotlinIconProvider.getSingleClass(childValue)
if (mainClass != null) {
result.add(KtClassOrObjectTreeNode(childValue.project, mainClass, settings))
}
else {