private JPanel buildControlButtons()

in src/main/java/org/adoptopenjdk/jitwatch/ui/nmethod/codecache/CodeCacheLayoutPanel.java [80:190]


    private JPanel buildControlButtons()
    {
        JPanel panelButtons = new JPanel();
        panelButtons.setLayout(new BoxLayout(panelButtons, BoxLayout.X_AXIS));
        panelButtons.setBorder(new EmptyBorder(4, 4, 0, 8));

        JButton btnZoomIn = new JButton("Zoom In");
        JButton btnZoomOut = new JButton("Zoom Out");
        JButton btnZoomReset = new JButton("Reset");
        btnAnimate = new JButton("Animate");

        checkC1 = new JCheckBox("Show C1");
        checkC1.setSelected(drawC1);
        checkC1.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                drawC1 = checkC1.isSelected();
                repaint();
            }
        });

        checkC2 = new JCheckBox("Show C2");
        checkC2.setSelected(drawC2);
        checkC2.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                drawC2 = checkC2.isSelected();
                repaint();
            }
        });

        txtAnimationSeconds = new JTextField("5", 5);
        txtAnimationSeconds.setMaximumSize(new Dimension(60, 25));
        txtAnimationSeconds.setEditable(false); // Assuming "readonly-label"

        btnZoomIn.setPreferredSize(new Dimension(80, 25));
        btnZoomOut.setPreferredSize(new Dimension(80, 25));
        btnZoomReset.setPreferredSize(new Dimension(80, 25));
        btnAnimate.setPreferredSize(new Dimension(80, 25));

        btnZoomIn.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                zoom += 0.2;
                repaint();
            }
        });

        btnZoomOut.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                zoom -= 0.2;
                zoom = Math.max(zoom, 1);
                repaint();
            }
        });

        btnZoomReset.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                zoom = 1;
                repaint();
            }
        });

        btnAnimate.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                try
                {
                    double animateOverSeconds = Double.parseDouble(txtAnimationSeconds.getText());
                    animate(animateOverSeconds);
                }
                catch (NumberFormatException nfe)
                {
                    // Handle exception (e.g., show an error message)
                }
            }
        });

        Component spacer = Box.createHorizontalGlue();

        panelButtons.add(checkC1);
        panelButtons.add(Box.createHorizontalStrut(10));
        panelButtons.add(checkC2);
        panelButtons.add(Box.createHorizontalStrut(20));
        panelButtons.add(btnZoomIn);
        panelButtons.add(Box.createHorizontalStrut(5));
        panelButtons.add(btnZoomOut);
        panelButtons.add(Box.createHorizontalStrut(5));
        panelButtons.add(btnZoomReset);
        panelButtons.add(Box.createHorizontalStrut(5));
        panelButtons.add(btnAnimate);
        panelButtons.add(Box.createHorizontalStrut(5));
        panelButtons.add(txtAnimationSeconds);
        panelButtons.add(spacer);

        return panelButtons;
    }