package krasa.grepconsole.gui.table.column;
import javax.swing.*;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import org.jetbrains.annotations.Nullable;
public abstract class ButtonColumnInfo<Item> extends JavaBeanColumnInfo<Item, Item> {
private String label;
public ButtonColumnInfo(String name) {
super(null, null);
label = name;
}
@Override
public void setValue(Item item, Item item2) {
}
@Nullable
@Override
public Item valueOf(Item grepExpressionItem) {
return grepExpressionItem;
}
@Nullable
@Override
public TableCellEditor getEditor(Item o) {
return new ButtonEditor<Item>(new JCheckBox()) {
@Override
protected String getLabel(Object value) {
return label;
}
@Override
protected void onButtonClicked(Item item) {
ButtonColumnInfo.this.onButtonClicked(item);
}
};
}
@Override
public boolean isCellEditable(Item grepExpressionItem) {
return true;
}
@Nullable
@Override
public TableCellRenderer getRenderer(Item aVoid) {
return new ButtonRenderer() {
@Override
protected String getText(Object value) {
return label;
}
};
}
abstract void onButtonClicked(Item item);
}