fun getIcons()

in remote-fixtures/src/main/kotlin/com/intellij/remoterobot/fixtures/TextEditorFixture.kt [66:100]


    fun getIcons(): List<GutterIcon> {
        val icons = callJs<ArrayList<String>>(
            """
            const iconsArray = new ArrayList()
            const method = component.getClass().getDeclaredMethod('processGutterRenderers')
            method.setAccessible(true)
            try {
                const iteratable = method.invoke(component)
                const iterator = iteratable.iterator() 
                while(iterator.hasNext()) {
                    let lineInfo = iterator.next()
                    let renderers = lineInfo.getValue()
                    for (let i = 0; i < renderers.size(); i++) {
                        let icon = {
                            point: {}
                        }
                        let renderer = renderers.get(i)
                        let point = component.getCenterPoint(renderer)
                        if (point) {
                            icon.description = new String(renderer.getIcon().toString())
                            icon.point.x = point.x
                            icon.point.y = point.y
                            icon.lineNumber = parseInt(lineInfo.getKey() + 1)
                            iconsArray.add(JSON.stringify(icon))
                        }
                    }
                }
            } finally {
              method.setAccessible(false)
            }
            iconsArray
        """, true
        )
        return icons.map { Gson().fromJson(it, GutterIconInfo::class.java) }.map { GutterIcon(this, it) }
    }