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