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
}