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