protected void initGui(Composite parent) {
    final int gdMinimumWidth = 550;
    final int gdHeightHint = 200;

    createFilterPanel(parent);

    group = new Group(parent, SWT.NONE);
    if (getTitle() != null) {
      group.setText(getTitle());
    }
    GridLayout groupOrganizationLayout = new GridLayout(1, true);
    group.setLayout(groupOrganizationLayout);
    GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
    gd.minimumWidth = gdMinimumWidth;
    gd.heightHint = gdHeightHint;
    group.setLayoutData(gd);

    scrolledComposite = new ScrolledComposite(group, SWT.V_SCROLL);
    scrolledComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
    scrolledComposite.setExpandHorizontal(true);

    innerComposite = new Composite(scrolledComposite, SWT.NONE);
    scrolledComposite.setContent(innerComposite);
    innerComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
    innerComposite.setLayout(new GridLayout(1, false));

    if (selection != null && !selection.isEmpty()) {
      Iterator<T> iter = selection.iterator();
      while (iter.hasNext()) {
        preSelectedElements.add(iter.next());
      }
    } else if (selectedElement != null) {
      preSelectedElements.add(selectedElement);
    }

    checkboxMap = new HashMap<T, Button>();

    addCheckboxes();
  }