package org.gjt.sp.jedit.gui;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;
public class CheckBoxListModel extends AbstractTableModel {
Vector<JCheckBoxList.Entry> items;
CheckBoxListModel(Vector _items) {
items = new Vector<JCheckBoxList.Entry>(_items.size());
for (int i = 0; i < _items.size(); i++) {
items.add(createEntry(_items.elementAt(i)));
}
}
CheckBoxListModel(Object[] _items) {
items = new Vector<JCheckBoxList.Entry>(_items.length);
for (int i = 0; i < _items.length; i++) {
items.add(createEntry(_items[i]));
}
}
private JCheckBoxList.Entry createEntry(Object obj) {
if (obj instanceof JCheckBoxList.Entry)
return (JCheckBoxList.Entry) obj;
else
return new JCheckBoxList.Entry(false, obj);
}
public int getRowCount() {
return items.size();
}
public int getColumnCount() {
return 2;
}
@Override
public String getColumnName(int col) {
return null;
}
public Object getValueAt(int row, int col) {
JCheckBoxList.Entry entry = items.get(row);
switch (col) {
case 0:
return Boolean.valueOf(entry.checked);
case 1:
return entry.value;
default:
throw new InternalError();
}
}
@Override
public Class getColumnClass(int col) {
switch (col) {
case 0:
return Boolean.class;
case 1:
return String.class;
default:
throw new InternalError();
}
}
@Override
public boolean isCellEditable(int row, int col) {
JCheckBoxList.Entry entry = items.get(row);
return col == 0 && !entry.caption;
}
@Override
public void setValueAt(Object value, int row, int col) {
if (col == 0) {
JCheckBoxList.Entry entry = items.get(row);
if (!entry.caption) {
entry.checked = (value.equals(Boolean.TRUE));
fireTableRowsUpdated(row, row);
}
}
}
public Vector<JCheckBoxList.Entry> getItems() {
return items;
}
public void setItems(Vector<JCheckBoxList.Entry> items) {
this.items = items;
}
} //}}}