refactor converter initialization

- push lazyInit() down to IDE and Cli implementations
- no file listeners created in cli implementation anymore
- fix tests
This commit is contained in:
Mikhail Mutcianko
2014-07-21 12:37:36 +04:00
committed by Yan Zhulanow
parent d557fa8d5d
commit d107ad92a0
6 changed files with 52 additions and 32 deletions
@@ -2,8 +2,38 @@ package org.jetbrains.jet.plugin.android
import org.jetbrains.jet.lang.resolve.android.AndroidUIXmlParser
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VirtualFileManager
import java.util.ArrayList
import com.intellij.openapi.vfs.VirtualFileAdapter
import com.intellij.openapi.vfs.VirtualFileEvent
class IDEAndroidUIXmlParser(project: Project): AndroidUIXmlParser() {
override val searchPath: String? = project.getBasePath() + "/res/layout/"
override protected fun lazySetup() {
if (listenerSetUp) return
val fileManager = VirtualFileManager.getInstance()
val watchDir = fileManager.findFileByUrl("file://" + searchPath)
filesToProcess.addAll(watchDir?.getChildren()?.toArrayList() ?: ArrayList(0))
fileManager.addVirtualFileListener(object : VirtualFileAdapter() {
override fun contentsChanged(event: VirtualFileEvent) {
if (event.getParent() == watchDir)
filesToProcess.add(event.getFile())
}
override fun fileCreated(event: VirtualFileEvent) {
if (event.getParent() == watchDir)
super<VirtualFileAdapter>.fileCreated(event)
}
override fun fileDeleted(event: VirtualFileEvent) {
if (event.getParent() == watchDir) {
// ignore potential synchronisation issues - it doesn't really matter if invalidation and
// file processing will be handled in different passes
invalidateCaches = true
filesToProcess.addAll(watchDir?.getChildren()?.toArrayList() ?: ArrayList(0))
}
}
})
listenerSetUp = true
}
}