/** {@inheritDoc} */
  @Override
  public Component doCreateWidget(Object parent) {
    if (checkBox == null) {

      checkBox = new CheckBox();
      checkBox.addStyleName(CSS_CLASS_CONTROL);
      checkBox.setImmediate(true);
      setupComponent(checkBox, getCastedModel());

      associateWidget(checkBox, modelAccess.yField);
      if (modelAccess.isCssIdValid()) {
        checkBox.setId(modelAccess.getCssID());
      } else {
        checkBox.setId(getEditpart().getId());
      }

      property = new ObjectProperty<Boolean>(false, Boolean.class);
      checkBox.setPropertyDataSource(property);

      // creates the binding for the field
      createBindings(modelAccess.yField, checkBox);

      if (modelAccess.isCssClassValid()) {
        checkBox.addStyleName(modelAccess.getCssClass());
      }

      applyCaptions();

      initializeField(checkBox);
    }
    return checkBox;
  }