public void resizeTableToFitColumns(final boolean redistribute) {
        int totalWidth = 0;
        final int outerWidth = getElement().getClientWidth();
        final int tableWidth = getTableBodyElement().getClientWidth();

        // If the outer width is greater than the table with then see if we can expand the columns and table to fit the
        // space.
        if (redistribute && outerWidth > 0 && outerWidth > tableWidth) {
            double totalWeight = 0;
            int totalColWidth = 0;
            for (int i = 0; i < super.getColumnCount() && i < colSettings.size(); i++) {
                final Column<R, ?> col = super.getColumn(i);
                final ColSettings settings = colSettings.get(i);
                if (settings != null) {
                    final String stringWidth = getColumnWidth(col);
                    int w = getPx(stringWidth);
                    totalColWidth += w;
                    if (settings.isFill()) {
                        totalWeight += settings.getFillWeight();
                    }
                }
            }

            final int remaining = outerWidth - totalColWidth;
            if (remaining > 0 && totalWeight > 0) {
                totalWidth = resizeColumnsAndFill(remaining, totalWeight);
            } else {
                totalWidth = resizeColumns();
            }
        } else {
            totalWidth = resizeColumns();
        }

        super.setTableWidth(totalWidth, Unit.PX);
        emptyTableWidget.getElement().getStyle().setWidth(totalWidth, Unit.PX);
        emptyTableWidget.getElement().getStyle().setHeight(20, Unit.PX);
        loadingTableWidget.getElement().getStyle().setWidth(totalWidth, Unit.PX);
        loadingTableWidget.getElement().getStyle().setHeight(20, Unit.PX);
    }
Add a resizable column that will initially expand so that the table fills the available space.
Unless manually resized, it will expand to fill but not go below the initialMinimumWidth.
Once the user resizes it, it becomes a fixed width column under their control.

@param initialMinimumWidth Initial minimum width in pixels. Ignored once the user has resized it.
stroom-core-client-widget/src/main/java/stroom/data/grid/client/MyDataGrid.java