docs: protected void init() {
  
          setHeightUndefined();
          removeExistingTable(getLeftTableLayout());
          removeExistingTable(getRightTableLayout());
  
          final CmsAvailableRoleOrPrincipalTable table = new CmsAvailableRoleOrPrincipalTable(this);
          if (getAvailableItemsIndexedContainer("caption", "icon").size() > 0) {
              getRightTableLayout().addComponent(new FixedHeightPanel(table, ITEM_HEIGHT), 0);
          } else {
              getRightTableLayout().addComponent(
                  new FixedHeightPanel(CmsVaadinUtils.getInfoLayout(getEmptyMessage()), ITEM_HEIGHT));
          }
          if (getItemsOfUserIndexedContainer("prop1", "prop2", "prop3").size() > 0) {
              getLeftTableLayout().addComponent(
                  new FixedHeightPanel(new CmsCurrentRoleOrPrincipalTable(this, m_cms, m_principal), ITEM_HEIGHT),
                  0);
          } else {
              getLeftTableLayout().addComponent(
                  new FixedHeightPanel(CmsVaadinUtils.getInfoLayout(getEmptyMessage()), ITEM_HEIGHT));
          }
  
          TextField siteTableFilter = new TextField();
          siteTableFilter.setIcon(FontOpenCms.FILTER);
          siteTableFilter.setInputPrompt(
              Messages.get().getBundle(UI.getCurrent().getLocale()).key(Messages.GUI_EXPLORER_FILTER_0));
          siteTableFilter.addStyleName(ValoTheme.TEXTFIELD_INLINE_ICON);
          siteTableFilter.setWidth("200px");
          siteTableFilter.addTextChangeListener(new TextChangeListener() {
  
              private static final long serialVersionUID = 1L;
  
              public void textChange(TextChangeEvent event) {
  
                  table.filterTable(event.getText());
              }
          });
          if (getParentLayout().getComponent(0) instanceof TextField) {
              getParentLayout().removeComponent(getParentLayout().getComponent(1));
              getParentLayout().removeComponent(getParentLayout().getComponent(0));
          }
          HorizontalLayout caps = new HorizontalLayout();
          caps.setSpacing(true);
          caps.setWidth("100%");
          caps.setHeight("30px");
          caps.addComponent(new Label(getCurrentTableCaption()));
          caps.addComponent(new Label(getAddCaptionText()));
          getParentLayout().addComponent(caps, 0);
          getParentLayout().addComponent(siteTableFilter, 0);
          getParentLayout().setComponentAlignment(siteTableFilter, com.vaadin.ui.Alignment.TOP_RIGHT);
          getParentLayout().setExpandRatio(getParentLayout().getComponent(2), 1);
      }