code: public void updateColumnWidths(int estimatedSpace) {
  
          Object[] cols = m_fileTable.getVisibleColumns();
          List<CmsResourceTableProperty> expandCols = Lists.newArrayList();
          int nonExpandWidth = 0;
          int totalExpandMinWidth = 0;
          for (Object colObj : cols) {
              if (m_fileTable.isColumnCollapsed(colObj)) {
                  continue;
              }
              CmsResourceTableProperty prop = (CmsResourceTableProperty)colObj;
              if (0 < m_fileTable.getColumnExpandRatio(prop)) {
                  expandCols.add(prop);
                  totalExpandMinWidth += getAlternativeWidthForExpandingColumns(prop);
              } else {
                  nonExpandWidth += prop.getColumnWidth();
              }
          }
          if (estimatedSpace < (totalExpandMinWidth + nonExpandWidth)) {
              for (CmsResourceTableProperty expandCol : expandCols) {
                  m_fileTable.setColumnWidth(expandCol, getAlternativeWidthForExpandingColumns(expandCol));
              }
          }
      }
docs: Updates the column widths.<p>
  
  The reason this is needed is that the Vaadin table does not support minimum widths for columns,
  so expanding columns get squished when most of the horizontal space is used by other columns.
  So we try to determine whether the expanded columns would have enough space, and if not, give them a
  fixed width.
  
  @param estimatedSpace the estimated horizontal space available for the table.