public JPanel createLogTablePanel() {
        int size = w.getDeposits().size() + w.getWithdraws().size();
        transitions = new String[size][4];
        
        tableHeaders = new String[4];
        tableHeaders[0] = "Type";
        tableHeaders[1] = "Amount";
        tableHeaders[2] = "Reason";
        tableHeaders[3] = "Date";

        for (int i = 0; i < w.getDeposits().size(); i++) {
            transitions[i] = w.getDeposits().get(i).getDepositInformation();
        }
        for (int j = w.getDeposits().size(); j < size; j++) {
            transitions[j] = w.getWithdraws().get(j - w.getDeposits().size()).getWithdrawInformation();
        }

        logTable = new JTable(transitions, tableHeaders);
        logTable.setModel(new AbstractTableModel() {

            public String getColumnName(int column) {
                return tableHeaders[column];
            }

            @Override
            public int getRowCount() {
                return transitions.length;
            }

            @Override
            public int getColumnCount() {
                return transitions[0].length;
            }

            @Override
            public Object getValueAt(int i, int i1) {
                return transitions[i][i1];
            }

            public Class<?> getColumnClass(int columnIndex) {
                return Integer.class;
            }

            public boolean isCellEditable(int row, int col) {
                return false;
            }
        });

        logTable.getColumnModel().getColumn(3).setPreferredWidth(90);
        logTable.getTableHeader().setReorderingAllowed(false);

        logTable.setAutoCreateRowSorter(true);

        JScrollPane scrollPane = new JScrollPane(logTable);
        logTable.setFillsViewportHeight(true);

        tablePanel = new JPanel();
        tablePanel.add(scrollPane);

        return tablePanel;
    }