/**
   * Constructor for tunneling editor controller
   *
   * @param config The node module configuration
   * @param ureq The user request
   * @param wControl The window controller
   * @param tuCourseNode The current single page course node
   * @param course
   */
  public LTIEditController(
      final ModuleConfiguration config,
      final UserRequest ureq,
      final WindowControl wControl,
      final BasicLTICourseNode ltCourseNode,
      final ICourse course,
      final UserCourseEnvironment euce) {
    super(ureq, wControl);

    this.config = config;
    this.courseNode = ltCourseNode;
    this.editCourseEnv = course.getCourseEnvironment();

    myContent = this.createVelocityContainer("edit");
    previewButton = LinkFactory.createButtonSmall("command.preview", myContent, this);

    ltConfigForm = new LTIConfigForm(ureq, wControl, config);
    listenTo(ltConfigForm);

    myContent.put("ltConfigForm", ltConfigForm.getInitialComponent());

    final CourseGroupManager groupMgr = course.getCourseEnvironment().getCourseGroupManager();
    final CourseEditorTreeModel editorModel = course.getEditorTreeModel();
    // Accessibility precondition
    final Condition accessCondition = courseNode.getPreConditionAccess();
    accessibilityCondContr =
        new ConditionEditController(
            ureq,
            getWindowControl(),
            groupMgr,
            accessCondition,
            "accessabilityConditionForm",
            AssessmentHelper.getAssessableNodes(editorModel, ltCourseNode),
            euce);
    this.listenTo(accessibilityCondContr);

    // Enable preview button only if node configuration is valid
    if (!(ltCourseNode.isConfigValid().isError())) {
      myContent.contextPut("showPreviewButton", Boolean.TRUE);
    } else {
      myContent.contextPut("showPreviewButton", Boolean.FALSE);
    }
  }
 /**
  * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest,
  *     org.olat.core.gui.control.Controller, org.olat.core.gui.control.Event)
  */
 @Override
 public void event(final UserRequest ureq, final Controller source, final Event event) {
   if (source == accessibilityCondContr) {
     if (event == Event.CHANGED_EVENT) {
       final Condition cond = accessibilityCondContr.getCondition();
       courseNode.setPreConditionAccess(cond);
       fireEvent(ureq, NodeEditController.NODECONFIG_CHANGED_EVENT);
     }
   } else if (source == ltConfigForm) {
     if (event == Event.CANCELLED_EVENT) {
       // do nothing
     } else if (event == Event.DONE_EVENT) {
       config = ltConfigForm.getUpdatedConfig();
       fireEvent(ureq, NodeEditController.NODECONFIG_CHANGED_EVENT);
       // form valid -> node config valid -> show preview button
       myContent.contextPut("showPreviewButton", Boolean.TRUE);
     }
   }
 }