package nars.gui.output; import automenta.vivisect.swing.NPanel; import java.awt.BorderLayout; import static java.awt.BorderLayout.CENTER; import java.util.ArrayList; import java.util.List; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import nars.NAR; import nars.io.Output; public abstract class TablePanel extends NPanel { protected final NAR nar; protected DefaultTableModel data; protected final JTable table; private final Output out; public TablePanel(NAR nar) { super(new BorderLayout()); this.nar = nar; table = new JTable(); table.setFillsViewportHeight(true); add(new JScrollPane(table), CENTER); out = new Output(nar, false) { @Override public void event(Class event, Object[] arguments) { output(event, arguments.length > 1 ? arguments : arguments[0]); } }; } abstract public void output(Class c, Object s); @Override protected void onShowing(boolean showing) { out.setActive(showing); } protected List<Object> getSelectedRows(int column) { int[] selectedRows = table.getSelectedRows(); List<Object> l = new ArrayList(selectedRows.length); for (int i : selectedRows) { int selectedRow = table.convertRowIndexToModel(i); l.add(data.getValueAt(selectedRow, column)); } return l; } }