fun createContentPanel()

in src/main/kotlin/com/jetbrains/interactiveRebase/visuals/MainPanel.kt [131:208]


    fun createContentPanel(): JBScrollPane {
        val scrollable = JBScrollPane()

        val contentPanel = JBPanel<JBPanel<*>>()
        contentPanel.layout = GridBagLayout()

        val gbc = GridBagConstraints()
        gbc.gridx = 0
        gbc.gridy = 0
        gbc.weightx = 1.0
        gbc.weighty = 1.0
        gbc.anchor = GridBagConstraints.CENTER
        gbc.fill = GridBagConstraints.VERTICAL

        contentPanel.add(
            graphPanel,
            gbc,
        )

        val help = HelpPanel(project)
        gbc.insets.left = help.width

        contentPanel.add(
            graphWrapper,
            gbc,
        )
        scrollable.setViewportView(contentPanel)
        scrollable.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER)
        scrollable.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED)
        gbc.gridx = 1
        gbc.gridy = 0
        gbc.fill = GridBagConstraints.VERTICAL
        gbc.weightx = 0.0
        gbc.weighty = 0.0
        gbc.anchor = GridBagConstraints.SOUTHEAST
        gbc.insets.left = 0
        contentPanel.add(help, gbc)

        contentPanel.addMouseListener(
            object : MouseListener {
                override fun mouseClicked(e: MouseEvent?) {
                    SwingUtilities.invokeLater { requestFocusInWindow() }
                    graphPanel.mainBranchPanel.openTextFields.forEach {
                            textField ->
                        if (textField.isVisible && e?.component !== textField) {
                            if (textField.keyListeners.isEmpty() || textField.keyListeners[0] !is TextFieldListener) return
                            val listener = textField.keyListeners[0] as TextFieldListener
                            listener.processEnter()
                        }
                    }
                }

                override fun mousePressed(e: MouseEvent?) {
                    SwingUtilities.invokeLater { requestFocusInWindow() }
                    if (e != null && e.isPopupTrigger) {
                        invokePopup(e.x, e.y)
                        e.consume()
                    }
                }

                override fun mouseReleased(e: MouseEvent?) {
                    SwingUtilities.invokeLater { requestFocusInWindow() }
                    if (e != null && e.isPopupTrigger) {
                        invokePopup(e.x, e.y)
                        e.consume()
                    }
                }

                override fun mouseEntered(e: MouseEvent?) {
                }

                override fun mouseExited(e: MouseEvent?) {
                }
            },
        )

        return scrollable
    }