in src/main/java/org/apache/log4j/chainsaw/color/ColorPanel.java [551:618]
JPanel buildUpDownPanel() {
JPanel panel = new JPanel(new BorderLayout());
JPanel innerPanel = new JPanel();
innerPanel.setLayout(new GridLayout(5, 1));
final JButton upButton = new JButton(ChainsawIcons.ICON_UP);
upButton.setToolTipText("Move selected rule up");
final JButton downButton = new JButton(ChainsawIcons.ICON_DOWN);
downButton.setToolTipText("Move selected rule down");
upButton.setEnabled(false);
downButton.setEnabled(false);
rulesTable.getSelectionModel().addListSelectionListener(
e -> {
if (!e.getValueIsAdjusting()) {
int index = rulesTable.getSelectionModel().getMaxSelectionIndex();
if (index < 0) {
downButton.setEnabled(false);
upButton.setEnabled(false);
} else if ((index == 0) && (rulesTableModel.getRowCount() == 1)) {
downButton.setEnabled(false);
upButton.setEnabled(false);
} else if ((index == 0) && (rulesTableModel.getRowCount() > 1)) {
downButton.setEnabled(true);
upButton.setEnabled(false);
} else if (index == (rulesTableModel.getRowCount() - 1)) {
downButton.setEnabled(false);
upButton.setEnabled(true);
} else {
downButton.setEnabled(true);
upButton.setEnabled(true);
}
}
});
JPanel upPanel = new JPanel();
upPanel.add(upButton);
JPanel downPanel = new JPanel();
downPanel.add(downButton);
innerPanel.add(new JLabel(""));
innerPanel.add(upPanel);
innerPanel.add(new JLabel(""));
innerPanel.add(downPanel);
panel.add(innerPanel, BorderLayout.CENTER);
upButton.addActionListener(
new AbstractAction() {
public void actionPerformed(ActionEvent evt) {
int index = rulesTable.getSelectionModel().getMaxSelectionIndex();
rulesTableModel.moveRowAtIndexUp(index);
}
});
downButton.addActionListener(
new AbstractAction() {
public void actionPerformed(ActionEvent evt) {
int index = rulesTable.getSelectionModel().getMaxSelectionIndex();
rulesTableModel.moveRowAtIndexDown(index);
}
});
return panel;
}