package com.example.client.utils;
|
|
import com.example.client.model.TableButton;
|
|
import javax.swing.*;
|
import javax.swing.table.DefaultTableCellRenderer;
|
import javax.swing.table.TableCellEditor;
|
import java.awt.*;
|
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionListener;
|
import java.util.EventObject;
|
import java.util.List;
|
|
public class CreateTableButton {
|
public static class ButtonPane extends JPanel {
|
|
private String state;
|
private JButton[] buttons;
|
|
public ButtonPane(List<TableButton> list) {
|
setLayout(new GridBagLayout());
|
buttons = new JButton[list.size()];
|
for (int i = 0; i <list.size() ; i++) {
|
buttons[i] = new JButton(list.get(i).getName());
|
|
buttons[i].setActionCommand(list.get(i).getId());
|
add(buttons[i]);
|
}
|
|
for (int i = 0; i < buttons.length; i++) {
|
ActionListener listener = new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
state = e.getActionCommand();
|
System.out.println("State = " + state);
|
}
|
};
|
buttons[i].addActionListener(listener);
|
}
|
|
}
|
|
public void addActionListener(ActionListener listener) {
|
for (int i = 0; i < buttons.length; i++) {
|
buttons[i].addActionListener(listener);
|
}
|
}
|
|
public String getState() {
|
return state;
|
}
|
}
|
|
public static class AcceptRejectRenderer extends DefaultTableCellRenderer {
|
|
private ButtonPane buttonPane;
|
|
public AcceptRejectRenderer(List<TableButton> button) {
|
buttonPane = new ButtonPane(button);
|
}
|
|
@Override
|
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
|
if (isSelected) {
|
buttonPane.setBackground(table.getSelectionBackground());
|
} else {
|
buttonPane.setBackground(table.getBackground());
|
}
|
return buttonPane;
|
}
|
}
|
|
public static class AcceptRejectEditor extends AbstractCellEditor implements TableCellEditor {
|
|
private ButtonPane buttonPane;
|
|
public AcceptRejectEditor(List<TableButton> button) {
|
buttonPane = new ButtonPane(button);
|
buttonPane.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
SwingUtilities.invokeLater(new Runnable() {
|
@Override
|
public void run() {
|
stopCellEditing();
|
}
|
});
|
}
|
});
|
}
|
|
@Override
|
public Object getCellEditorValue() {
|
return buttonPane.getState();
|
}
|
|
@Override
|
public boolean isCellEditable(EventObject e) {
|
return true;
|
}
|
|
@Override
|
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
|
if (isSelected) {
|
buttonPane.setBackground(table.getSelectionBackground());
|
} else {
|
buttonPane.setBackground(table.getBackground());
|
}
|
return buttonPane;
|
}
|
}
|
}
|