/**
   * Adds different selection elements to the given form. Like radio buttons and checkboxes.
   *
   * @param formItemsFactory
   * @param form
   */
  private void addSelections(final FormItemContainer form) {
    // drop-down list
    uifactory.addDropdownSingleselect("guidemo.form.pulldown", form, keys, options, null);

    // vertical radio buttons
    verticalRadioButtons = uifactory.addRadiosVertical("guidemo.form.radio1", form, keys, options);
    // As an example on how to use the formInnerEvent method we'll catch events
    // on these radio buttons and therefore need to add the current controller
    // to their listeners.
    verticalRadioButtons.addActionListener(this, FormEvent.ONCLICK);

    // checkboxes
    final MultipleSelectionElement checkboxes =
        uifactory.addCheckboxesVertical(
            "checkboxes", "advanced_form.checkboxes", form, keys, options, null, 1);

    // Translate the keys to the yes and no option values
    final String[] yesOrNoOptions = new String[yesOrNoKeys.length];
    for (int i = 0; i < yesOrNoKeys.length; i++) {
      yesOrNoOptions[i] = translate(yesOrNoKeys[i]);
    }

    // Horizontal radio buttons. Choice between Yes or No.
    horizontalRadioButtons =
        uifactory.addRadiosHorizontal("guidemo.form.radio2", form, yesOrNoKeys, yesOrNoOptions);
    // A default value is needed for show/hide rules
    horizontalRadioButtons.select(yesOrNoKeys[0], true);
    horizontalRadioButtons.addActionListener(
        this, FormEvent.ONCLICK); // Radios/Checkboxes need onclick because of IE bug OLAT-5753
  }
  private void initFilterList(final FormItemContainer formLayout) {
    final List<EPFilterSettings> existingFilters = ePFMgr.getSavedFilterSettings(getIdentity());
    for (final Iterator<EPFilterSettings> existingFilterIt = existingFilters.iterator();
        existingFilterIt.hasNext(); ) {
      if (existingFilterIt.next().isFilterEmpty()) {
        existingFilterIt.remove();
      }
    }

    final int amount = existingFilters.size() + 1;
    nonEmptyFilters = new ArrayList<EPFilterSettings>(amount);
    final String[] theKeys = new String[amount];
    final String[] theValues = new String[amount];

    String presetFilterIndex = theKeys[0] = "0";
    theValues[0] = translate("filter.all");

    int i = 1;
    final String presetFilterID = filterSettings.getFilterId();
    for (final EPFilterSettings epFilterSettings : existingFilters) {
      theKeys[i] = epFilterSettings.getFilterId();
      theValues[i] = epFilterSettings.getFilterName();
      if (presetFilterID != null && presetFilterID.equals(epFilterSettings.getFilterId())) {
        presetFilterIndex = epFilterSettings.getFilterId();
      }
      nonEmptyFilters.add(epFilterSettings);
      i++;
    }
    // don't show anything if no filter exists
    if (!nonEmptyFilters.isEmpty()) {
      if (formLayout.getFormComponent("filter.select") == null) {
        filterSel =
            uifactory.addDropdownSingleselect(
                "filter.select", formLayout, theKeys, theValues, null);
        filterSel.addActionListener(this, FormEvent.ONCHANGE);
      } else {
        filterSel.setKeysAndValues(theKeys, theValues, null);
        filterSel.setVisible(true);
      }
      if (presetFilterIndex != null) {
        filterSel.select(presetFilterIndex, true);
      }
    } else if (formLayout.getFormComponent("filter.select") != null) {
      formLayout.getFormComponent("filter.select").setVisible(false);
    }
  }