private void initTable() {
        // JobNode Enabled tick box
        jobNodeListHelper.addEnabledTickBoxColumn(dataGrid, false);

        // Job Name
        final Column<JobNodeAndInfo, CommandLink> jobNameColumn = DataGridUtil.commandLinkColumnBuilder(
                        this::openJobNodeAsCommandLink)
                .enabledWhen(jobNodeListHelper::isJobNodeEnabled)
                .build();

        DataGridUtil.addCommandLinkFieldUpdater(jobNameColumn);
        dataGrid.addResizableColumn(
                jobNameColumn,
                DataGridUtil.headingBuilder("Job Name")
                        .withToolTip("The name of the job.")
                        .build(),
                350);

        // Job State.
        dataGrid.addColumn(
                DataGridUtil.textColumnBuilder(JobNodeListHelper::buildParentJobEnabledStr)
                        .enabledWhen(jobNodeListHelper::isJobNodeEnabled)
                        .build(),
                DataGridUtil.headingBuilder("Job State")
                        .withToolTip("Whether this job is enabled across all nodes or not. " +
                                "An enabled job must also be enabled on a node for it to execute on that node.")
                        .build(),
                80);

        // Node State
        jobNodeListHelper.addNodeStateColumn(dataGrid);
        // Type
        jobNodeListHelper.addTypeColumn(dataGrid);
        // Schedule.
        jobNodeListHelper.addScheduleColumn(dataGrid);
        // Last executed.
        jobNodeListHelper.addLastExecutedColumn(dataGrid);
        // Next executed.
        jobNodeListHelper.addNextExecutedColumn(dataGrid);
        // Action column
        jobNodeListHelper.addActionColumn(dataGrid);

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