fun addComponents()

in src/main/kotlin/com/jetbrains/interactiveRebase/visuals/LabeledBranchPanel.kt [318:380]


    fun addComponents() {
        labelPanelWrapper.layout = GridBagLayout()
        labelPanelWrapper.minimumSize = Dimension(JBUI.scale(300), labelPanelWrapper.minimumHeight)

        val circles = branchPanel.circles
        messages.clear()
        commitLabels.clear()
        for ((i, circle) in circles.withIndex()) {
            val commitLabel = generateCommitLabel(i, circle)
            val wrappedLabel = wrapLabelWithTextField(commitLabel, branch.currentCommits[i])
            wrappedLabel.preferredSize =
                Dimension(
                    wrappedLabel.minimumWidth,
                    circle.preferredHeight,
                )
            wrappedLabel.minimumSize =
                Dimension(
                    wrappedLabel.minimumWidth,
                    circle.preferredHeight,
                )
            val gbc = gridCellForCircle(i, circles)
            if (i == 0) {
                gbc.insets.top = branchPanel.diameter
            }
            gbc.weightx = 1.0
            labelPanelWrapper.add(wrappedLabel, gbc)
            commitLabels.add(commitLabel)

            val dragAndDropListener =
                CircleDragAndDropListener(
                    project,
                    circle,
                    circles,
                    this,
                )
            circle.addMouseListener(dragAndDropListener)
            circle.addMouseMotionListener(dragAndDropListener)
            Disposer.register(this, dragAndDropListener)

            val circleHoverListener = CircleHoverListener(circle)
            circle.addMouseListener(circleHoverListener)
            circle.addMouseMotionListener(circleHoverListener)
            Disposer.register(this, circleHoverListener)
            val index = branch.currentCommits.indexOf(branch.baseCommit)
            if (
                !branch.isWritable &&
                circle !is CollapseCirclePanel &&
                !circle.commit.wasCherryPicked &&
                branch.currentCommits.indexOf(circle.commit) < index
            ) {
                val cherryDragAndDropListener =
                    CherryDragAndDropListener(
                        project,
                        circle,
                        this,
                        project.service<ActionService>().mainPanel,
                    )
                circle.addMouseListener(cherryDragAndDropListener)
                circle.addMouseMotionListener(cherryDragAndDropListener)
                Disposer.register(this, cherryDragAndDropListener)
            }
        }
    }