Skip to content

Commit

Permalink
Updating naming slightly
Browse files Browse the repository at this point in the history
  • Loading branch information
Kantis committed Jun 22, 2024
1 parent 7770a51 commit 00479b4
Show file tree
Hide file tree
Showing 8 changed files with 51 additions and 48 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,20 @@ import javax.swing.tree.DefaultTreeModel
import javax.swing.tree.TreeModel
import kotlin.properties.Delegates.observable

/**
* Manages state related to the test explorer tool window, including:
* - Currently selected options in the UI
* - The current file being displayed
* - The tags found in the project
*/
@Service(Service.Level.PROJECT)
class KotestService(
class KotestTestExplorerService(
private val project: Project,
private val scope: CoroutineScope,
) {

@Suppress("unused") // Will be used on IC-223
// TODO: Remove when dropping IC-223 support.
@Suppress("unused")
constructor(project: Project) : this(project, CoroutineScope(Dispatchers.Default))

var showCallbacks by observable(true) { _, _, _ -> reloadModelInBackgroundThread() }
Expand All @@ -44,12 +51,16 @@ class KotestService(
var tags: List<String> by observable(emptyList()) { _, _, _ -> reloadModelInBackgroundThread() }
var currentFile: VirtualFile? by observable(null) { _, _, _ -> reloadModelInBackgroundThread() }

private val modelListeners = mutableListOf<KotestModelListener>()

fun registerModelListener(kotestModelListener: KotestModelListener) {
modelListeners.add(kotestModelListener)
/**
* Interface used by dependent components to receive updates to the tree model.
*/
interface ModelListener {
fun setModel(treeModel: TreeModel)
}

private val modelListeners = mutableListOf<ModelListener>()
fun registerModelListener(modelListener: ModelListener) { modelListeners.add(modelListener) }

private fun reloadModelInBackgroundThread() {
scope.launch {
withContext(Dispatchers.Default) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ import javax.swing.event.TreeSelectionListener
class TestExplorerTreeSelectionListener(
val project: Project,
) : TreeSelectionListener {
private val kotestService: KotestService = project.getService(KotestService::class.java)
private val kotestTestExplorerService: KotestTestExplorerService = project.getService(KotestTestExplorerService::class.java)

override fun valueChanged(e: TreeSelectionEvent) {
// this event is also fired when the path is "unselected" by clicking inside the editor
// and isAddedPath will return false for that scenario (which we don't want to react to)
if (e.isAddedPath && kotestService.autoscrollToSource) {
if (e.isAddedPath && kotestTestExplorerService.autoscrollToSource) {
val psi = when (val node = e.path.nodeDescriptor()) {
is SpecNodeDescriptor -> node.psi
is CallbackNodeDescriptor -> node.psi
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import java.awt.event.MouseEvent
* The main panel for the test explorer 'tool window'.
*/
class TestExplorerWindow(private val project: Project) : SimpleToolWindowPanel(true, false) {
val kotestService: KotestService = project.getService(KotestService::class.java)
val kotestTestExplorerService: KotestTestExplorerService = project.getService(KotestTestExplorerService::class.java)

private val fileEditorManager = FileEditorManager.getInstance(project)
private val tree = TestFileTree(project)
Expand Down Expand Up @@ -56,7 +56,7 @@ class TestExplorerWindow(private val project: Project) : SimpleToolWindowPanel(t
val files = events.mapNotNull { it.file }
val modified = files.firstOrNull { it.name == selectedFile.name }
if (modified != null)
kotestService.currentFile = modified
kotestTestExplorerService.currentFile = modified
}
}
}
Expand All @@ -74,7 +74,7 @@ class TestExplorerWindow(private val project: Project) : SimpleToolWindowPanel(t
override fun selectionChanged(event: FileEditorManagerEvent) {
val file = fileEditorManager.selectedEditor?.file
if (file != null) {
kotestService.currentFile = file
kotestTestExplorerService.currentFile = file
}
}
}
Expand All @@ -88,7 +88,7 @@ class TestExplorerWindow(private val project: Project) : SimpleToolWindowPanel(t
val selectedFile = fileEditorManager.selectedEditor?.file
if (selectedFile != null) {
if (file.virtualFile.name == selectedFile.name) {
kotestService.currentFile = file.virtualFile
kotestTestExplorerService.currentFile = file.virtualFile
}
}
}
Expand All @@ -102,9 +102,9 @@ class TestExplorerWindow(private val project: Project) : SimpleToolWindowPanel(t
}

private fun refreshContent() {
kotestService.scanTags()
kotestTestExplorerService.scanTags()
fileEditorManager.selectedEditor?.file?.let {
kotestService.currentFile = it
kotestTestExplorerService.currentFile = it
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ import javax.swing.tree.TreeSelectionModel
class TestFileTree(
project: Project,
) : com.intellij.ui.treeStructure.Tree(),
KotestModelListener {
KotestTestExplorerService.ModelListener {
private val testExplorerTreeSelectionListener = TestExplorerTreeSelectionListener(project)
private val kotestService: KotestService = project.getService(KotestService::class.java)
private val kotestTestExplorerService: KotestTestExplorerService = project.getService(KotestTestExplorerService::class.java)

init {
selectionModel.selectionMode = TreeSelectionModel.SINGLE_TREE_SELECTION
Expand All @@ -19,7 +19,7 @@ class TestFileTree(
cellRenderer = NodeRenderer()
// listens to changes in the selections
addTreeSelectionListener(testExplorerTreeSelectionListener)
kotestService.registerModelListener(this)
kotestTestExplorerService.registerModelListener(this)
}

override fun setModel(treeModel: TreeModel) {
Expand Down
4 changes: 2 additions & 2 deletions src/main/kotlin/io/kotest/plugin/intellij/toolwindow/tags.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ class KotestTagFileListener(
private val tree: TestFileTree,
project: Project,
) : PsiTreeAnyChangeAbstractAdapter() {
private val kotestService: KotestService = project.getService(KotestService::class.java)
private val kotestTestExplorerService: KotestTestExplorerService = project.getService(KotestTestExplorerService::class.java)

override fun onChange(file: PsiFile?) {
if (file == null) return
if (file.name == TagsFilename) {
kotestService.scanTags()
kotestTestExplorerService.scanTags()
}
}
}
Expand Down
30 changes: 15 additions & 15 deletions src/main/kotlin/io/kotest/plugin/intellij/toolwindow/toolbar.kt
Original file line number Diff line number Diff line change
Expand Up @@ -68,34 +68,34 @@ class ExpandAllAction(
class FilterCallbacksAction(
project: Project,
) : ToggleAction("Filter Callbacks", null, AllIcons.Nodes.Controller) {
private val kotestService: KotestService = project.getService(KotestService::class.java)
private val kotestTestExplorerService: KotestTestExplorerService = project.getService(KotestTestExplorerService::class.java)

override fun getActionUpdateThread() = ActionUpdateThread.EDT

override fun isSelected(e: AnActionEvent): Boolean = kotestService.showCallbacks
override fun isSelected(e: AnActionEvent): Boolean = kotestTestExplorerService.showCallbacks

override fun setSelected(
e: AnActionEvent,
state: Boolean,
) {
kotestService.showCallbacks = state
kotestTestExplorerService.showCallbacks = state
}
}

class FilterModulesAction(
project: Project,
) : ToggleAction("Filter Modules", null, AllIcons.Nodes.ModuleGroup) {
private val kotestService: KotestService = project.getService(KotestService::class.java)
private val kotestTestExplorerService: KotestTestExplorerService = project.getService(KotestTestExplorerService::class.java)

override fun getActionUpdateThread() = ActionUpdateThread.EDT

override fun isSelected(e: AnActionEvent): Boolean = kotestService.showModules
override fun isSelected(e: AnActionEvent): Boolean = kotestTestExplorerService.showModules

override fun setSelected(
e: AnActionEvent,
state: Boolean,
) {
kotestService.showModules = state
kotestTestExplorerService.showModules = state
}
}

Expand All @@ -104,48 +104,48 @@ class FilterTagsAction(
) : ToggleAction("Filter Tags", null, AllIcons.Nodes.Tag) {
override fun getActionUpdateThread() = ActionUpdateThread.EDT

private val kotestService: KotestService = project.getService(KotestService::class.java)
private val kotestTestExplorerService: KotestTestExplorerService = project.getService(KotestTestExplorerService::class.java)

override fun isSelected(e: AnActionEvent): Boolean = kotestService.showTags
override fun isSelected(e: AnActionEvent): Boolean = kotestTestExplorerService.showTags

override fun setSelected(
e: AnActionEvent,
state: Boolean,
) {
kotestService.showTags = state
kotestTestExplorerService.showTags = state
}
}

class FilterIncludesAction(
project: Project,
) : ToggleAction("Filter Includes", null, AllIcons.Nodes.Tag) {
private val kotestService: KotestService = project.getService(KotestService::class.java)
private val kotestTestExplorerService: KotestTestExplorerService = project.getService(KotestTestExplorerService::class.java)

override fun getActionUpdateThread() = ActionUpdateThread.EDT

override fun isSelected(e: AnActionEvent): Boolean = kotestService.showIncludes
override fun isSelected(e: AnActionEvent): Boolean = kotestTestExplorerService.showIncludes

override fun setSelected(
e: AnActionEvent,
state: Boolean,
) {
kotestService.showIncludes = state
kotestTestExplorerService.showIncludes = state
}
}

class NavigateToNodeAction(
project: Project,
) : ToggleAction("Autoscroll To Source", null, AllIcons.General.AutoscrollToSource) {
private val kotestService: KotestService = project.getService(KotestService::class.java)
private val kotestTestExplorerService: KotestTestExplorerService = project.getService(KotestTestExplorerService::class.java)

override fun getActionUpdateThread() = ActionUpdateThread.EDT

override fun isSelected(e: AnActionEvent): Boolean = kotestService.autoscrollToSource
override fun isSelected(e: AnActionEvent): Boolean = kotestTestExplorerService.autoscrollToSource

override fun setSelected(
e: AnActionEvent,
state: Boolean,
) {
kotestService.autoscrollToSource = state
kotestTestExplorerService.autoscrollToSource = state
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ fun createTreeModel(
module: Module
): TreeModel {

val kotestService = project.getService(KotestService::class.java)
val kotestTestExplorerService = project.getService(KotestTestExplorerService::class.java)
val kotest = KotestRootNodeDescriptor(project)
val root = DefaultMutableTreeNode(kotest)

Expand All @@ -49,7 +49,7 @@ fun createTreeModel(
}
}

if (kotestService.showModules) {
if (kotestTestExplorerService.showModules) {

val allModulesDescriptor = ModulesNodeDescriptor(project)
val allModulesNode = DefaultMutableTreeNode(allModulesDescriptor)
Expand All @@ -65,13 +65,13 @@ fun createTreeModel(
}
}

if (kotestService.showTags) {
if (kotestTestExplorerService.showTags) {

val descriptor = TagsNodeDescriptor(project)
val node = DefaultMutableTreeNode(descriptor)
root.add(node)

kotestService.tags.forEach {
kotestTestExplorerService.tags.forEach {
val tagDescriptor = TagNodeDescriptor(it, project, descriptor)
val tagNode = DefaultMutableTreeNode(tagDescriptor)
node.add(tagNode)
Expand All @@ -92,7 +92,7 @@ fun createTreeModel(
val specNode = DefaultMutableTreeNode(specDescriptor)
fileNode.add(specNode)

if (kotestService.showCallbacks) {
if (kotestTestExplorerService.showCallbacks) {
val callbacks = spec.callbacks()
callbacks.forEach {
val callbackDescriptor = CallbackNodeDescriptor(project, specDescriptor, it.psi, it)
Expand All @@ -101,7 +101,7 @@ fun createTreeModel(
}
}

if (kotestService.showIncludes) {
if (kotestTestExplorerService.showIncludes) {
val includes = spec.includes()
includes.forEach {
val includeDescriptor = IncludeNodeDescriptor(project, specDescriptor, it.psi, it)
Expand Down

0 comments on commit 00479b4

Please sign in to comment.