override fun onSelectedRibChanged()

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
    }
  }