private void updateTableModel(final DCTable table, final List<InputColumn<?>> list) {
final String[] columnNames = new String[2];
columnNames[0] = "Column name";
columnNames[1] = "Move";
final DefaultTableModel tableModel = new DefaultTableModel(columnNames, list.size());
for (int i = 0; i < list.size(); i++) {
final int index = i;
final JButton moveDownButton = WidgetFactory.createSmallButton("/images/actions/move-down.png");
moveDownButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
InputColumn<?> col1 = list.get(index);
InputColumn<?> col2 = list.get(index + 1);
list.set(index, col2);
list.set(index + 1, col1);
updateTableModel(table, list);
}
});
final JButton moveUpButton = WidgetFactory.createSmallButton("/images/actions/move-up.png");
moveUpButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
InputColumn<?> col1 = list.get(index);
InputColumn<?> col2 = list.get(index - 1);
list.set(index, col2);
list.set(index - 1, col1);
updateTableModel(table, list);
}
});
final DCPanel buttonPanel = new DCPanel();
buttonPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));
if (i == list.size() - 1) {
buttonPanel.add(Box.createHorizontalStrut(moveDownButton.getPreferredSize().width));
} else {
buttonPanel.add(moveDownButton);
}
buttonPanel.add(Box.createHorizontalStrut(6));
if (i == 0) {
buttonPanel.add(Box.createHorizontalStrut(moveUpButton.getPreferredSize().width));
} else {
buttonPanel.add(moveUpButton);
}
tableModel.setValueAt(list.get(i).getName(), i, 0);
tableModel.setValueAt(buttonPanel, i, 1);
}
table.setModel(tableModel);
}