public Object getValueAt(int row, int column) {
            if (row >= listData.size())
                throw new IndexOutOfBoundsException("Report row "+row+" is not valid");

            Object value;
            TransactionRecord t = listData.get(row);

            switch (column) {
                case 0:                             // Date (mm/dd/yyyy)
                    value = Main.getDateString(t.getDate());
                    break;

                case 1:                             // Security
                    value = t.getSecurity().getName();
                    break;

                case 2:                             // Category
                    CategoryRecord c = t.getCategory();
                    if (c != null)
                        value = c.getName();
                    else
                        value = " ";
                    break;
                    
                case 3:                             // Amount
                    value = String.format("%,.2f", -t.getAmount());
                    break;

                default:
                    throw new IndexOutOfBoundsException("Report column "+column+" is not valid");
            }

            return value;
        }