override fun buildChildren()

in tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/RibHierarchyTreeStructure.kt [33:108]


  override fun buildChildren(descriptor: HierarchyNodeDescriptor): Array<Any> {
    val descriptors: ArrayList<HierarchyNodeDescriptor> = ArrayList(1)
    when (descriptor) {
      is RibHierarchyRootNodeDescriptor -> {
        descriptor.ribHost.application?.let {
          descriptors.add(
            RibHierarchyApplicationDescriptor(
              myProject,
              descriptor,
              RibHierarchyUtils.getPsiClass(project, descriptor.ribHost.name),
              it,
            ),
          )
        }
      }
      is RibHierarchyApplicationDescriptor -> {
        descriptor.ribApplication.activities.forEach { activity ->
          descriptors.add(
            RibHierarchyActivityDescriptor(
              myProject,
              descriptor,
              RibHierarchyUtils.getPsiClass(project, activity.name),
              activity,
            ),
          )
        }
      }
      is RibHierarchyActivityDescriptor -> {
        descriptors.add(
          RibHierarchyNodeDescriptor(
            myProject,
            descriptor,
            RibHierarchyUtils.getPsiClass(project, descriptor.ribActivity.name),
            descriptor.ribActivity.rootRib,
          ),
        )
      }
      is RibHierarchyNodeDescriptor -> {
        descriptor.ribNode.children.forEach { childRibNode ->
          descriptors.add(
            RibHierarchyNodeDescriptor(
              myProject,
              descriptor,
              RibHierarchyUtils.getPsiClass(project, childRibNode.name),
              childRibNode,
            ),
          )
        }
      }
      is RibViewRootNodeDescriptor -> {
        descriptor.ribView?.children?.forEach { view ->
          descriptors.add(
            RibViewNodeDescriptor(
              myProject,
              RibHierarchyUtils.getPsiClass(project, view.id),
              descriptor.ribNode,
              view,
            ),
          )
        }
      }
      is RibViewNodeDescriptor -> {
        descriptor.ribView?.children?.forEach { view ->
          descriptors.add(
            RibViewNodeDescriptor(
              myProject,
              RibHierarchyUtils.getPsiClass(project, view.id),
              descriptor.ribNode,
              view,
            ),
          )
        }
      }
    }
    return descriptors.toTypedArray()
  }