Skip to content

Commit e78bb06

Browse files
committed
Use FileStatusListener to refresh ProjectView when foldIgnoredFiles
1 parent 2db1f7e commit e78bb06

File tree

3 files changed

+17
-33
lines changed

3 files changed

+17
-33
lines changed

src/main/kotlin/ski/chrzanow/foldableprojectview/projectView/FoldableChangeListListener.kt

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/main/kotlin/ski/chrzanow/foldableprojectview/projectView/FoldableTreeStructureProvider.kt

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import com.intellij.openapi.module.ModuleUtil
1212
import com.intellij.openapi.project.Project
1313
import com.intellij.openapi.project.guessModuleDir
1414
import com.intellij.openapi.vcs.FileStatus
15+
import com.intellij.openapi.vcs.FileStatusListener
16+
import com.intellij.openapi.vcs.FileStatusManager
1517
import com.intellij.openapi.vcs.changes.ignore.cache.PatternCache
1618
import com.intellij.openapi.vcs.changes.ignore.lang.Syntax
1719
import ski.chrzanow.foldableprojectview.settings.FoldableProjectSettings
@@ -23,18 +25,25 @@ class FoldableTreeStructureProvider(project: Project) : TreeStructureProvider {
2325
private val settings = project.service<FoldableProjectSettings>()
2426
private val patternCache = PatternCache.getInstance(project)
2527
private var previewState: FoldableProjectState? = null
28+
private val projectView = ProjectView.getInstance(project)
2629
private val state get() = previewState ?: settings
2730

2831
init {
29-
val view = ProjectView.getInstance(project)
30-
3132
project.messageBus
3233
.connect(project)
3334
.subscribe(FoldableProjectSettingsListener.TOPIC, object : FoldableProjectSettingsListener {
3435
override fun settingsChanged(settings: FoldableProjectSettings) {
35-
view.currentProjectViewPane?.updateFromRoot(true)
36+
refreshProjectView()
3637
}
3738
})
39+
40+
FileStatusManager.getInstance(project).addFileStatusListener(object : FileStatusListener {
41+
override fun fileStatusesChanged() {
42+
if (settings.foldIgnoredFiles) {
43+
refreshProjectView()
44+
}
45+
}
46+
}, project)
3847
}
3948

4049
override fun modify(
@@ -58,6 +67,10 @@ class FoldableTreeStructureProvider(project: Project) : TreeStructureProvider {
5867
}
5968
}
6069

70+
fun withState(state: FoldableProjectState) {
71+
previewState = state
72+
}
73+
6174
private fun isModule(node: PsiDirectoryNode, project: Project) = node.virtualFile?.let {
6275
ModuleUtil.findModuleForFile(it, project)?.guessModuleDir() == it
6376
} ?: false
@@ -88,7 +101,5 @@ class FoldableTreeStructureProvider(project: Project) : TreeStructureProvider {
88101
else -> this
89102
}
90103

91-
fun withState(state: FoldableProjectState) {
92-
previewState = state
93-
}
104+
private fun refreshProjectView() = projectView.currentProjectViewPane?.updateFromRoot(true)
94105
}

src/main/resources/META-INF/plugin.xml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,6 @@
2020
implementation="ski.chrzanow.foldableprojectview.projectView.FoldableTreeStructureProvider"/>
2121
</extensions>
2222

23-
<projectListeners>
24-
<listener
25-
class="ski.chrzanow.foldableprojectview.projectView.FoldableChangeListListener"
26-
topic="com.intellij.openapi.vcs.changes.ChangeListListener"/>
27-
</projectListeners>
28-
2923
<actions>
3024
<action id="ProjectView.FoldRootFiles"
3125
class="ski.chrzanow.foldableprojectview.actionSystem.FoldRootFilesAction"

0 commit comments

Comments
 (0)