20 package org.sleuthkit.autopsy.casemodule;
29 import java.awt.event.*;
31 import javax.swing.border.*;
32 import javax.swing.table.*;
47 class ButtonColumn
extends AbstractCellEditor
48 implements TableCellRenderer, TableCellEditor, ActionListener, MouseListener
51 private Action action;
53 private Border originalBorder;
54 private Border focusBorder;
56 private JButton renderButton;
57 private JButton editButton;
59 private boolean isButtonColumnEditor;
74 ButtonColumn(JTable table, Action action,
int column, String buttonName)
78 this.buttonName = buttonName;
80 renderButton =
new JButton();
81 editButton =
new JButton();
82 editButton.setFocusPainted(
false );
83 editButton.addActionListener(
this );
84 originalBorder = editButton.getBorder();
85 setFocusBorder(
new LineBorder(Color.BLUE) );
87 TableColumnModel columnModel = table.getColumnModel();
88 columnModel.getColumn(column).setCellRenderer(
this );
89 columnModel.getColumn(column).setCellEditor(
this );
90 table.addMouseListener(
this );
99 public Border getFocusBorder()
109 public void setFocusBorder(Border focusBorder)
111 this.focusBorder = focusBorder;
112 editButton.setBorder( focusBorder );
115 public int getMnemonic()
125 public void setMnemonic(
int mnemonic)
127 this.mnemonic = mnemonic;
128 renderButton.setMnemonic(mnemonic);
129 editButton.setMnemonic(mnemonic);
133 public Component getTableCellEditorComponent(
134 JTable table, Object value,
boolean isSelected,
int row,
int column)
136 text = (value == null) ?
"" : value.toString();
137 editButton.setText( text );
142 public Object getCellEditorValue()
151 public Component getTableCellRendererComponent(
152 JTable table, Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column)
156 renderButton.setForeground(table.getSelectionForeground());
157 renderButton.setBackground(table.getSelectionBackground());
161 renderButton.setForeground(table.getForeground());
162 renderButton.setBackground(UIManager.getColor(
"Button.background"));
167 renderButton.setBorder( focusBorder );
171 renderButton.setBorder( originalBorder );
175 renderButton.setText(buttonName);
186 public void actionPerformed(ActionEvent e)
188 int row = table.convertRowIndexToModel( table.getEditingRow() );
189 fireEditingStopped();
193 ActionEvent
event =
new ActionEvent(
195 ActionEvent.ACTION_PERFORMED,
197 action.actionPerformed(event);
209 public void mousePressed(MouseEvent e)
211 if (table.isEditing()
212 && table.getCellEditor() ==
this)
213 isButtonColumnEditor =
true;
217 public void mouseReleased(MouseEvent e)
219 if (isButtonColumnEditor
220 && table.isEditing())
221 table.getCellEditor().stopCellEditing();
223 isButtonColumnEditor =
false;
227 public void mouseClicked(MouseEvent e) {}
229 public void mouseEntered(MouseEvent e) {}
231 public void mouseExited(MouseEvent e) {}