private void initTableColumns() {
        // Rule.
        dataGrid.addResizableColumn(
                DataGridUtil.htmlColumnBuilder((ReceiveDataRule row) ->
                        getSafeHtml(row, row2 -> Integer.toString(row2.getRuleNumber())))
                        .rightAligned()
                        .build(),
                DataGridUtil.createRightAlignedHeader("Rule"),
                40);

        // Name.
        dataGrid.addResizableColumn(
                DataGridUtil.htmlColumnBuilder((ReceiveDataRule row) ->
                        getSafeHtml(row, ReceiveDataRule::getName))
                        .build(),
                "Name",
                ColumnSizeConstants.MEDIUM_COL);

        // Expression.
        dataGrid.addResizableColumn(
                DataGridUtil.htmlColumnBuilder((ReceiveDataRule row) ->
                        getSafeHtml(row, row2 -> row2.getExpression().toString()))
                        .build(),
                "Expression",
                500);

        // Action.
        dataGrid.addResizableColumn(
                DataGridUtil.safeHtmlColumn((ReceiveDataRule row) ->
                        getSafeHtml(row, row2 -> row2.getAction().getDisplayValue())),
                "Action",
                ColumnSizeConstants.SMALL_COL);

        DataGridUtil.addEndColumn(dataGrid);
    }
Add the columns to the table.
stroom-core-client/src/main/java/stroom/receive/rules/client/presenter/RuleSetListPresenter.java