@Override
        public void widgetSelected(SelectionEvent e) {
          if (fIsUpdating) {
            return;
          }
          if (fActModel == null) {
            return;
          }

          if (fButtonNone.getSelection()) {
            fStackComposite.setControl(null);
            fActModel.getCompleteActType().setChoice(ICompleteActType.COMPLETE_NONE);
          } else if (fButtonWhenRolePartsCompleted.getSelection()) {
            fStackComposite.setControl(fRolePartListViewer.getControl());
            fActModel
                .getCompleteActType()
                .setChoice(ICompleteActType.COMPLETE_WHEN_ROLE_PART_COMPLETED);
          } else if (fButtonTimeLimit.getSelection()) {
            fStackComposite.setControl(fTimeLimitComposite);
            fActModel.getCompleteActType().setChoice(ICompleteActType.COMPLETE_TIME_LIMIT);
          } else if (fButtonWhenPropertySet.getSelection()) {
            fStackComposite.setControl(fCompleteActPropertyEditor);
            fActModel.getCompleteActType().setChoice(ICompleteActType.COMPLETE_WHEN_PROPERTY_SET);
          } else if (fButtonWhenConditionTrue.getSelection()) {
            fStackComposite.setControl(fWhenConditionTrueEditor);
            fActModel.getCompleteActType().setChoice(ICompleteActType.COMPLETE_WHEN_CONDITION_TRUE);
          }

          fActModel.getLDModel().setDirty();
        }
  public void refresh() {
    if (fActModel == null) {
      return;
    }

    fIsUpdating = true;

    fButtonNone.setSelection(false);
    fButtonWhenRolePartsCompleted.setSelection(false);
    fButtonTimeLimit.setSelection(false);
    fButtonWhenPropertySet.setSelection(false);
    fButtonWhenConditionTrue.setSelection(false);

    // Choice
    int choice = fActModel.getCompleteActType().getChoice();
    switch (choice) {
      case ICompleteActType.COMPLETE_NONE:
        fButtonNone.setSelection(true);
        fStackComposite.setControl(null);
        break;

      case ICompleteActType.COMPLETE_WHEN_ROLE_PART_COMPLETED:
        fButtonWhenRolePartsCompleted.setSelection(true);
        fStackComposite.setControl(fRolePartListViewer.getControl());
        break;

      case ICompleteActType.COMPLETE_TIME_LIMIT:
        fButtonTimeLimit.setSelection(true);
        fStackComposite.setControl(fTimeLimitComposite);
        break;

      case ICompleteActType.COMPLETE_WHEN_PROPERTY_SET:
        fButtonWhenPropertySet.setSelection(true);
        fStackComposite.setControl(fCompleteActPropertyEditor);
        break;

      case ICompleteActType.COMPLETE_WHEN_CONDITION_TRUE:
        fButtonWhenConditionTrue.setSelection(true);
        fStackComposite.setControl(fWhenConditionTrueEditor);
        break;

      default:
        break;
    }

    // Time Limit
    fTimeLimitComposite.setTimeLimitType(fActModel.getCompleteActType().getTimeLimitType());

    // Properties 1
    fCompleteActPropertyEditor.setOwner(fActModel.getCompleteActType());

    // Properties 2
    fOnCompleteActPropertyEditor.setOwner(fActModel.getOnCompletionType());

    // Role Parts
    fRolePartListViewer.setActModel(fActModel);

    // Conditions Editor
    fWhenConditionTrueEditor.setActModel(fActModel);

    // Notifications
    fOnCompletionNotificationsComposite.setOnCompletionType(fActModel.getOnCompletionType());

    fIsUpdating = false;
  }