code: private void init(final Window window) {
  
          CmsVaadinUtils.readAndLocalizeDesign(this, CmsVaadinUtils.getWpMessagesForCurrentLocale(), null);
          m_warningIcon.setContentMode(ContentMode.HTML);
          m_warningIcon.setValue(FontOpenCms.WARNING.getHtml());
          if (window != null) {
              m_cancel.addClickListener(e -> window.close());
          }
          m_table.setWidth("100%");
          m_table.setHeight("100%");
  
          List<CmsModuleRow> rows = new ArrayList<CmsModuleRow>();
          for (CmsModule module : OpenCms.getModuleManager().getAllInstalledModules()) {
              CmsModuleRow row = new CmsModuleRow(module);
              rows.add(row);
          }
          CmsBeanTableBuilder<CmsModuleRow> builder = CmsBeanTableBuilder.newInstance(CmsModuleRow.class);
          builder.buildTable(m_table, rows);
          m_table.setCellStyleGenerator(builder.getDefaultCellStyleGenerator());
          m_table.setItemIconPropertyId("icon");
          m_table.setRowHeaderMode(RowHeaderMode.ICON_ONLY);
          m_table.setSelectable(true);
          m_table.setVisibleColumns("name", "title");
          m_table.setSortContainerPropertyId("name");
          m_table.sort();
  
          m_filter.setIcon(FontOpenCms.FILTER);
          m_filter.setInputPrompt(
              Messages.get().getBundle(UI.getCurrent().getLocale()).key(Messages.GUI_EXPLORER_FILTER_0));
          m_filter.addStyleName(ValoTheme.TEXTFIELD_INLINE_ICON);
          m_filter.addTextChangeListener(new TextChangeListener() {
  
              public void textChange(TextChangeEvent event) {
  
                  filterTable(event.getText());
  
              }
          });
      }
docs: Init the dialog.<p>
  
  @param window window