fun initializeCirclePanel()

in src/main/kotlin/com/jetbrains/interactiveRebase/visuals/BranchPanel.kt [51:130]


    fun initializeCirclePanel(i: Int): CirclePanel {
        val commit = branch.currentCommits[i]
        var theme = colorTheme
        if (commit.isRebased) {
            theme = Palette.LIME_GREEN_THEME
        } else if (commit.isPaused) {
            theme = Palette.LIME_THEME
        }

        var circle =
            CirclePanel(
                diameter.toDouble(),
                borderSize,
                theme,
                branch.currentCommits[i],
            )

        val visualChanges = commit.getChangesAfterPick()

        if (visualChanges.any { it is CollapseCommand }) {
            circle =
                CollapseCirclePanel(
                    diameter.toDouble(),
                    4f,
                    theme,
                    branch.currentCommits[i],
                )
        } else if (visualChanges.any { it is DropCommand }) {
            circle =
                DropCirclePanel(
                    (diameter + 2).toDouble(),
                    borderSize,
                    theme,
                    branch.currentCommits[i],
                )
        } else if (visualChanges.any { it is SquashCommand } || visualChanges.any { it is FixupCommand }) {
            circle =
                SquashedCirclePanel(
                    diameter.toDouble(),
                    borderSize,
                    theme,
                    branch.currentCommits[i],
                )
        } else if (visualChanges.any { it is StopToEditCommand }) {
            circle =
                StopToEditCirclePanel(
                    diameter.toDouble(),
                    borderSize,
                    theme,
                    branch.currentCommits[i],
                )
        } else if (visualChanges.any { it is CherryCommand }) {
            circle =
                CherryCirclePanel(
                    diameter.toDouble(),
                    borderSize,
                    theme,
                    branch.currentCommits[i],
                    isModifiable = branch.isWritable,
                )
        } else if (commit.wasCherryPicked) {
            circle =
                CherryCirclePanel(
                    diameter.toDouble(),
                    borderSize,
                    colorTheme,
                    commit,
                    isModifiable = branch.isWritable,
                )
        }

        circles.add(circle)
        if (i > 0) {
            // Set reference to next circle
            circles[i - 1].next = circle
            // Set reference to previous circle
            circle.previous = circles[i - 1]
        }
        return circle
    }