@Override
    public void link() {
        final String tableId = getTextSettings().getTableId();
        String newTableId = getDashboardContext()
                .getComponents().validateOrGetLastComponentId(tableId, TablePresenter.TYPE.getId());

        // If we can't get the same table id then set to null so that changes to any table can be listened to.
        if (!Objects.equals(tableId, newTableId)) {
            newTableId = null;
        }

        setSettings(getTextSettings()
                .copy()
                .tableId(newTableId)
                .build());
        update(currentTablePresenter);
    }
The ranges returned are line/col positions in the input text. Thus the input text should
not be changed/formatted after the highlight ranges have been generated.
stroom-core-client/src/main/java/stroom/dashboard/client/text/TextPresenter.java