docs: protected void init(String ou) {
  
          m_menu = new CmsContextMenu();
          m_menu.setAsTableContextMenu(this);
  
          m_container = new IndexedContainer();
  
          for (TableProperty prop : TableProperty.values()) {
              m_container.addContainerProperty(prop, prop.getType(), prop.getDefault());
              setColumnHeader(prop, prop.getName());
          }
          m_app.addGroupContainerProperties(m_container);
          setContainerDataSource(m_container);
          setItemIconPropertyId(TableProperty.Icon);
          setRowHeaderMode(RowHeaderMode.ICON_ONLY);
  
          setColumnWidth(null, 40);
          setSelectable(true);
          setMultiSelect(true);
  
          for (CmsGroup group : m_groups) {
              Item item = m_container.addItem(group);
              m_app.fillGroupItem(item, group, m_indirects);
          }
  
          addItemClickListener(new ItemClickListener() {
  
              private static final long serialVersionUID = 4807195510202231174L;
  
              @SuppressWarnings("unchecked")
              public void itemClick(ItemClickEvent event) {
  
                  changeValueIfNotMultiSelect(event.getItemId());
  
                  if (event.getButton().equals(MouseButton.RIGHT) || (event.getPropertyId() == null)) {
                      Set<String> groupIds = new HashSet<String>();
                      for (CmsGroup group : (Set<CmsGroup>)getValue()) {
                          groupIds.add(group.getId().getStringValue());
                      }
                      m_menu.setEntries(getMenuEntries(), groupIds);
                      m_menu.openForTable(event, event.getItemId(), event.getPropertyId(), CmsGroupTable.this);
                      return;
                  }
                  if (event.getButton().equals(MouseButton.LEFT) && event.getPropertyId().equals(TableProperty.Name)) {
                      updateApp((((Set<CmsGroup>)getValue()).iterator().next()).getId().getStringValue());
                  }
              }
  
          });
          setCellStyleGenerator(new CellStyleGenerator() {
  
              private static final long serialVersionUID = 1L;
  
              public String getStyle(Table source, Object itemId, Object propertyId) {
  
                  String css = "";
                  if (((Boolean)source.getItem(itemId).getItemProperty(
                      TableProperty.INDIRECT).getValue()).booleanValue()) {
                      css += " " + OpenCmsTheme.TABLE_CELL_DISABLED + " " + OpenCmsTheme.EXPIRED;
                  }
                  if (TableProperty.Name.equals(propertyId)) {
                      css += " " + OpenCmsTheme.HOVER_COLUMN;
                  }
  
                  return css;
              }
          });
          setVisibleColumns(TableProperty.Name, TableProperty.Description, TableProperty.OU);
      }