in tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyPanel.kt [142:180]
override fun onSelectedRibChanged(id: UUID) {
if (model.selectedViewId.isEmpty()) {
ribProjectService.highlightRib(id)
}
val rootElement: PsiElement = RibHierarchyUtils.buildRootElement(project)
val rootRibNode: RibNode = this.model.host.application?.activities?.first()?.rootRib ?: return
val ribNode: RibNode? = findRibNodeRecursive(rootRibNode, id)
val ribView: RibView? =
if (ribNode?.view?.id?.isNotEmpty() == true) {
findRibViewRecursive(rootRibNode.view, UUID.fromString(ribNode?.view?.id))
} else {
null
}
val model =
if (ribNode != null && ribView != null) {
ViewModel(
ribNode,
ribView,
rootRibNode,
this.model.selectedRibId,
this.model.selectedViewId,
)
} else {
EMPTY_VIEW_MODEL
}
val previousDividerLocation = splitPane.dividerLocation
viewBrowser = RibViewBrowser(project, model, rootElement, this)
viewBrowser?.changeView(RibViewBrowser.TYPE_HIERARCHY_TYPE)
splitPane.add(viewBrowser, RIGHT)
if (ribView != null && !dividerSet) {
splitPane.dividerLocation = splitPane.height / 2
dividerSet = true
} else {
splitPane.dividerLocation = previousDividerLocation
}
}