JPanel buildRulesPanel()

in src/main/java/org/apache/log4j/chainsaw/color/ColorPanel.java [620:708]


    JPanel buildRulesPanel() {
        JPanel listPanel = new JPanel(new BorderLayout());
        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

        panel.add(Box.createVerticalStrut(10));

        m_rulesLabel = new JLabel("Rules:");
        m_globalRulesCheckbox = new JCheckBox("Use global rules");

        if( m_globalColorizer == m_parentLogPanel.getCurrentRuleColorizer() ){
            m_globalRulesCheckbox.setSelected(true);
            m_rulesLabel.setText("Global rules:");
        }

        m_globalRulesCheckbox.addActionListener(
                new AbstractAction() {
                    @Override
                    public void actionPerformed(ActionEvent ae) {
                        if( m_globalRulesCheckbox.isSelected() ){
                            m_parentLogPanel.setRuleColorizer( m_globalColorizer );
                        }else{
                            m_parentLogPanel.setRuleColorizer(new RuleColorizer());
                        }
                        componentChanged();
                        m_parentLogPanel.getCurrentRuleColorizer().addPropertyChangeListener(
                            "colorrule",
                            evt -> updateColors());
                    }
                });

        panel.add(m_globalRulesCheckbox);
        panel.add(m_rulesLabel);

        JPanel buttonPanel = new JPanel(new GridLayout(0, 2));
        buttonPanel.setAlignmentX(Component.LEFT_ALIGNMENT);

        JPanel newPanel = new JPanel();
        JButton newButton = new JButton(" New ");
        newButton.addActionListener(
            new AbstractAction() {
                public void actionPerformed(ActionEvent evt) {
                    rulesTableModel.addNewRule();
                }
            });

        newPanel.add(newButton);

        JPanel deletePanel = new JPanel();
        final JButton deleteButton = new JButton(" Delete ");
        deleteButton.setEnabled(false);

        deleteButton.addActionListener(
            new AbstractAction() {
                public void actionPerformed(ActionEvent evt) {
                    int index = rulesTable.getSelectionModel().getMaxSelectionIndex();
                    rulesTableModel.deleteRuleAtIndex(index);
                }
            });

        rulesTable.getSelectionModel().addListSelectionListener(
            e -> {
                if (!e.getValueIsAdjusting()) {
                    int index = rulesTable.getSelectionModel().getMaxSelectionIndex();

                    if (index < 0) {
                        deleteButton.setEnabled(false);
                    } else {
                        deleteButton.setEnabled(true);
                    }
                }
            });

        deletePanel.add(deleteButton);

        buttonPanel.add(newPanel);
        buttonPanel.add(deletePanel);

        listPanel.add(panel, BorderLayout.NORTH);

        JPanel tablePanel = new JPanel(new BorderLayout());
        tableScrollPane.setBorder(BorderFactory.createEtchedBorder());
        tablePanel.add(tableScrollPane, BorderLayout.CENTER);
        tablePanel.add(buildUpDownPanel(), BorderLayout.EAST);
        listPanel.add(tablePanel, BorderLayout.CENTER);
        listPanel.add(buttonPanel, BorderLayout.SOUTH);

        return listPanel;
    }