private SafeHtml buildTooltipHtml(final TaskProgress row) {
        final TableBuilder tableBuilder = new TableBuilder()
                .row(TableCell.header("Task", 2))
                .row("Name", row.getTaskName())
                .row("Node", getNodeName(row))
                .row("User", NullSafe.get(row, TaskProgress::getUserRef, UserRef::getDisplayName))
                .row("Submit Time", dateTimeFormatter.format(row.getSubmitTimeMs()))
                .row("Age", ModelStringUtil.formatDurationString(row.getAgeMs()))
                .row("Id", NullSafe.get(row.getId(), TaskId::getId));

        NullSafe.consume(row.getId(), TaskId::getParentId, TaskId::getId, parentId ->
                tableBuilder.row("Parent Id", parentId));

        tableBuilder.row("Thread Name", row.getThreadName());

        NullSafe.consume(row.getTaskInfo(), info ->
                tableBuilder.row(
                        TableCell.builder()
                                .value("Info")
                                .build(),
                        TableCell.builder()
                                .addClass(TableCell.WRAP_CLASS)
                                .value(info)
                                .build()));

        final HtmlBuilder htmlBuilder = new HtmlBuilder();
        htmlBuilder.div(tableBuilder::write, Attribute.className("taskManager infoTable"));
        return htmlBuilder.toSafeHtml();
    }
Add the columns to the table.
stroom-core-client/src/main/java/stroom/task/client/presenter/TaskManagerListPresenter.java