code: protected void init(Map<String, String> items) {
  
          initWidget(m_panel);
          m_items = new LinkedHashMap<String, String>(items);
          m_panel.setStyleName(I_CmsInputLayoutBundle.INSTANCE.inputCss().multiCheckBox());
          m_panel.addStyleName(I_CmsLayoutBundle.INSTANCE.generalCss().textMedium());
          FocusHandler focusHandler = new FocusHandler() {
  
              public void onFocus(FocusEvent event) {
  
                  CmsDomUtil.fireFocusEvent(CmsMultiCheckBox.this);
              }
          };
          for (Map.Entry<String, String> entry : items.entrySet()) {
              String value = entry.getValue();
              CmsCheckBox checkbox = new CmsCheckBox(value);
              // wrap the check boxes in FlowPanels to arrange them vertically
              FlowPanel checkboxWrapper = new FlowPanel();
              checkboxWrapper.add(checkbox);
              checkbox.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
  
                  public void onValueChange(ValueChangeEvent<Boolean> valueChanged) {
  
                      fireValueChanged(getFormValueAsString());
                  }
              });
              checkbox.getButton().addFocusHandler(focusHandler);
              m_panel.add(checkboxWrapper);
              m_checkboxes.add(checkbox);
          }
          m_panel.add(m_error);
      }
docs: Initializes the widget given a map of select options.<p>
  
  The keys of the map are the values of the select options, while the values of the map
  are the labels which should be used for the checkboxes.
  
  @param items the map of select options