package pipe.gui; import javax.swing.*; import javax.swing.table.TableCellEditor; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** * @author Alex Charalambous, June 2010: ColorDrawer, ColorPicker, * TokenPanel and TokenDialog are four classes used * to display the Token Classes dialog (accessible through the button * toolbar). */ class ColorPicker extends AbstractCellEditor implements ActionListener, TableCellEditor { private final JButton button; private Color currColor; private final JColorChooser colorChooser; private final JDialog dialog; private static final String EDIT_NAME = "edit"; public ColorPicker() { button = new JButton(); button.setBorderPainted(false); button.addActionListener(this); button.setActionCommand(EDIT_NAME); // Dialog brought up by button: colorChooser = new JColorChooser(); dialog = JColorChooser.createDialog(button, "Pick a Colour", true, colorChooser, this, null); } @Override public Object getCellEditorValue() { return currColor; } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { currColor = (Color) value; return button; } @Override public void actionPerformed(ActionEvent e) { if (EDIT_NAME.equals(e.getActionCommand())) { colorChooser.setColor(currColor); button.setBackground(currColor); dialog.setVisible(true); // Renderer re-appears. fireEditingStopped(); } else { currColor = colorChooser.getColor(); } } }