package com.github.xsavikx.androidscreencast.ui.model; import com.github.xsavikx.androidscreencast.api.injector.InputKeyEvent; import javax.inject.Inject; import javax.inject.Singleton; import javax.swing.table.AbstractTableModel; import java.util.ArrayList; import java.util.List; @Singleton public class InputKeyEventTableModel extends AbstractTableModel { private static final long serialVersionUID = 1553313932570896541L; private final static String INDEX_COLUMN_NAME = "#"; private final static String TITLE_COLUMN_NAME = "title"; private final static String DESCRIPTION_COLUMN_NAME = "description"; public static final String[] COLUMN_NAMES = { INDEX_COLUMN_NAME, TITLE_COLUMN_NAME, DESCRIPTION_COLUMN_NAME }; private List<List<Object>> data = new ArrayList<>(); private int rowCount = 0; @Inject public InputKeyEventTableModel(InputKeyEvent[] initialData) { initData(initialData); } private void initData(InputKeyEvent[] inputKeyEvents) { for (InputKeyEvent e : inputKeyEvents) { data.add(getDataRow(e)); } } private List<Object> getDataRow(InputKeyEvent e) { List<Object> row = new ArrayList<>(); row.add(rowCount++); row.add(e.name()); row.add(e.getDescription()); return row; } @Override public int getRowCount() { return data.size(); } @Override public int getColumnCount() { return COLUMN_NAMES.length; } @Override public Object getValueAt(int rowIndex, int columnIndex) { return data.get(rowIndex).get(columnIndex); } }