Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ExpenseTableModel extends AbstractTableModel {
- private static ResourceMap rm = Application.getInstance().getContext().getResourceManager().getResourceMap(ExpenseTable.class);
- public static enum ExpenseColumns {
- COLUMN_CATEGORY_ID,
- COLUMN_CATEGORY_DESCRIPTION,
- COLUMN_RESOURCE_ID,
- COLUMN_RESOURCE_NAME,
- COLUMN_AMOUNT,
- COLUMN_DESCRIPTION
- }
- protected String[] columnsNames;
- protected List<ActivityExpense> rows;
- public ExpenseTableModel() {
- rows = Lists.newArrayList();
- loadStrings();
- fireTableChanged(null);
- }
- public void setData(List<ActivityExpense> pages) {
- clear();
- this.rows.addAll(pages);
- if (!pages.isEmpty()) {
- fireTableRowsInserted(0, pages.size() - 1);
- }
- }
- public void addData(ActivityExpense e) {
- this.rows.add(e);
- int row = getRowCount() - 1;
- fireTableRowsInserted(row, row);
- }
- public void removeData(ActivityExpense e) {
- }
- public ActivityExpense getActivityExpense(int row) {
- return rows.get(row);
- }
- public int getNextAvailableId() {
- int max = 0;
- for (ActivityExpense e : rows) {
- max = Math.max(max, e.getLineId());
- }
- return max + 1;
- }
- public void clear() {
- int old = rows.size();
- rows.clear();
- if (old > 0) {
- fireTableRowsDeleted(0, 0 == old ? 0 : old -1);
- }
- }
- @Override
- public String getColumnName(int column) {
- return columnsNames[column];
- }
- @Override
- public Class<?> getColumnClass(int column) {
- ExpenseColumns c = ExpenseColumns.values()[column];
- switch (c) {
- case COLUMN_CATEGORY_ID:
- return String.class;
- case COLUMN_CATEGORY_DESCRIPTION:
- return String.class;
- case COLUMN_RESOURCE_ID:
- return String.class;
- case COLUMN_RESOURCE_NAME:
- return String.class;
- case COLUMN_AMOUNT:
- return Double.class;
- case COLUMN_DESCRIPTION:
- return String.class;
- }
- return String.class;
- }
- @Override
- public int getColumnCount() {
- return columnsNames.length;
- }
- @Override
- public int getRowCount() {
- return rows == null ? 0 : rows.size();
- }
- @Override
- public Object getValueAt(int row, int column) {
- ExpenseColumns c = ExpenseColumns.values()[column];
- ActivityExpense e = rows.get(row);
- switch (c) {
- case COLUMN_CATEGORY_ID:
- return e.getCategory().getId();
- case COLUMN_CATEGORY_DESCRIPTION:
- return e.getCategory().getDescription();
- case COLUMN_RESOURCE_ID:
- return e.getResource().getId();
- case COLUMN_RESOURCE_NAME:
- return e.getResource().getDescription();
- case COLUMN_AMOUNT:
- return e.getAmount();
- case COLUMN_DESCRIPTION:
- return e.getDescription();
- }
- return null;
- }
- @Override
- public boolean isCellEditable(int row, int column) {
- ExpenseColumns c = ExpenseColumns.values()[column];
- switch (c) {
- case COLUMN_CATEGORY_ID:
- return false; // for now
- case COLUMN_CATEGORY_DESCRIPTION:
- return false;
- case COLUMN_RESOURCE_ID:
- return false; // for now
- case COLUMN_RESOURCE_NAME:
- return false;
- case COLUMN_AMOUNT:
- return true;
- case COLUMN_DESCRIPTION:
- return true;
- }
- return false;
- }
- @Override
- public void setValueAt(Object value, int row, int column) {
- ExpenseColumns c = ExpenseColumns.values()[column];
- ActivityExpense e = rows.get(row);
- switch (c) {
- case COLUMN_CATEGORY_ID:
- // todo
- break;
- case COLUMN_CATEGORY_DESCRIPTION:
- break;
- case COLUMN_RESOURCE_ID:
- break;
- case COLUMN_RESOURCE_NAME:
- break;
- case COLUMN_AMOUNT:
- e.setAmount((Double)value);
- UnitOfWork.getInstance().registerDirty(e);
- break;
- case COLUMN_DESCRIPTION:
- e.setDescription(value.toString());
- UnitOfWork.getInstance().registerDirty(e);
- break;
- }
- }
- private void loadStrings() {
- int i = 0;
- columnsNames = new String[ExpenseColumns.COLUMN_DESCRIPTION.ordinal() + 1];
- columnsNames[i++] = rm.getString("column.category.id");
- columnsNames[i++] = rm.getString("column.category.desc");
- columnsNames[i++] = rm.getString("column.res.id");
- columnsNames[i++] = rm.getString("column.res.desc");
- columnsNames[i++] = rm.getString("column.amount.text");
- columnsNames[i++] = rm.getString("column.description.text");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement