Refactoring: introduce method for reuse file for single class logic
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user