package com.framsticks.gui.table; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultCellEditor; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JTable; import com.framsticks.params.types.ProcedureParam; import com.framsticks.util.lang.Casting; @SuppressWarnings("serial") public class ProcedureEditor extends DefaultCellEditor { protected JButton button; private ProcedureParam procedure; private boolean isPushed; public ProcedureEditor(JCheckBox checkBox) { super(checkBox); button = new JButton(); button.setOpaque(true); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fireEditingStopped(); } }); } public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { TableModel.transferCellAppeariance(table, button, isSelected); procedure = Casting.assertCast(ProcedureParam.class, value); button.setText(procedure.getName()); isPushed = true; return button; } public Object getCellEditorValue() { if (isPushed) { // // // JOptionPane.showMessageDialog(button, label + ": Ouch!"); // System.out.println(label + ": Ouch!"); } isPushed = false; return procedure; } public boolean stopCellEditing() { isPushed = false; return super.stopCellEditing(); } protected void fireEditingStopped() { super.fireEditingStopped(); } }