Package org.olat.ims.qti.editor.tree

Source Code of org.olat.ims.qti.editor.tree.AssessmentNode

/**
* OLAT - Online Learning and Training<br>
* http://www.olat.org
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br>
* University of Zurich, Switzerland.
* <p>
*/

package org.olat.ims.qti.editor.tree;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.tabbedpane.TabbedPane;
import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.WindowControl;
import org.olat.core.gui.control.generic.tabbable.TabbableController;
import org.olat.core.gui.translator.Translator;
import org.olat.core.util.memento.Memento;
import org.olat.ims.qti.editor.AssessmentController;
import org.olat.ims.qti.editor.QTIEditorMainController;
import org.olat.ims.qti.editor.QTIEditorPackage;
import org.olat.ims.qti.editor.beecom.objects.Assessment;
import org.olat.ims.qti.editor.beecom.objects.QTIObject;

/**
* Initial Date: Nov 18, 2004 <br>
*
* @author patrick
*/
public class AssessmentNode extends GenericQtiNode {

  private Assessment assmnt;
  private QTIEditorPackage qtiPackage;
  private TabbedPane myTabbedPane;

  /**
   * @param ass
   * @param qtiPackage
   */
  public AssessmentNode(Assessment ass, QTIEditorPackage qtiPackage) {
    this.assmnt = ass;
    this.qtiPackage = qtiPackage;
    setMenuTitleAndAlt(ass.getTitle());
    setUserObject(ass.getIdent());
    if (qtiPackage.getQTIDocument().isSurvey()) setIconCssClass("o_mi_iqsurv");
    else setIconCssClass("o_mi_iqtest");
  }

  /**
   * Set's the node's title and alt text (truncates title)
   *
   * @param title
   */
  public void setMenuTitleAndAlt(String title) {
    super.setMenuTitleAndAlt(title);
    assmnt.setTitle(title);
  }

  /**
   * @see org.olat.ims.qti.editor.tree.IQtiNode#createRunController(org.olat.core.gui.UserRequest,
   *      org.olat.core.gui.control.WindowControl)
   */
  public Controller createRunController(UserRequest ureq, WindowControl wControl) {
    // TODO Auto-generated method stub
    return null;
  }

  /**
   * @see org.olat.ims.qti.editor.tree.GenericQtiNode#createEditTabbedPane(org.olat.core.gui.UserRequest,
   *      org.olat.core.gui.control.WindowControl,
   *      org.olat.core.gui.translator.Translator, QTIEditorMainController)
   */
  public TabbedPane createEditTabbedPane(UserRequest ureq, WindowControl wControl, Translator trnsltr,
      QTIEditorMainController editorMainController) {
    if (myTabbedPane == null) {
      myTabbedPane = new TabbedPane("tabbedPane", ureq.getLocale());
      TabbableController tabbCntrllr = new AssessmentController(assmnt, qtiPackage, ureq, wControl, editorMainController
          .isRestrictedEdit());
      tabbCntrllr.addTabs(myTabbedPane);
      tabbCntrllr.addControllerListener(editorMainController);
    }
    return myTabbedPane;
  }

  /**
   * @return Assessment
   */
  public Assessment getAssessment() {
    return assmnt;
  }

  /**
   * @see org.olat.ims.qti.editor.tree.IQtiNode#insertQTIObjectAt(QTIObject,
   *      int)
   */
  public void insertQTIObjectAt(QTIObject object, int position) {
    List sections = assmnt.getSections();
    sections.add(position, object);
  }

  /**
   * @see org.olat.ims.qti.editor.tree.IQtiNode#removeQTIObjectAt(int)
   */
  public QTIObject removeQTIObjectAt(int position) {
    List sections = assmnt.getSections();
    return (QTIObject) sections.remove(position);
  }

  /**
   * @see org.olat.ims.qti.editor.tree.IQtiNode#getQTIObjectAt(int)
   */
  public QTIObject getQTIObjectAt(int position) {
    List sections = assmnt.getSections();
    return (QTIObject) sections.get(position);
  }

  /**
   * @see org.olat.ims.qti.editor.tree.IQtiNode#getUnderlyingQTIObject()
   */
  public QTIObject getUnderlyingQTIObject() {
    return assmnt;
  }

  public Memento createMemento() {
    // so far only TITLE and OBJECTIVES are stored in the memento
    QtiNodeMemento qnm = new QtiNodeMemento();
    Map qtiState = new HashMap();
    qtiState.put("ID", assmnt.getIdent());
    qtiState.put("TITLE", assmnt.getTitle());
    qtiState.put("OBJECTIVES", assmnt.getObjectives());
    qnm.setQtiState(qtiState);
    return qnm;
  }

  public void setMemento(Memento state) {
  // TODO Auto-generated method stub

  }

  public String createChangeMessage(Memento mem) {
    String retVal = null;
    if (mem instanceof QtiNodeMemento) {
      QtiNodeMemento qnm = (QtiNodeMemento) mem;
      Map qtiState = qnm.getQtiState();
      String oldTitle = (String) qtiState.get("TITLE");
      String newTitle = assmnt.getTitle();
      String titleChange = null;
      String oldObjectives = (String) qtiState.get("OBJECTIVES");
      String newObjectives = assmnt.getObjectives();
      String objectChange = null;
      retVal = "\nMetadata changes:";
      if ((oldTitle != null && !oldTitle.equals(newTitle)) || (newTitle != null && !newTitle.equals(oldTitle))) {
        titleChange = "\n\nold title: \n\t" + formatVariable(oldTitle) + "\n\nnew title: \n\t" + formatVariable(newTitle);
        retVal += titleChange;
      }
      if ((oldObjectives != null && !oldObjectives.equals(newObjectives))
          || (newObjectives != null && !newObjectives.equals(oldObjectives))) {
        objectChange = "\n\nold objectives: \n\t" + formatVariable(oldObjectives) + "\n\nnew objectives: \n\t"
            + formatVariable(newObjectives);
        retVal += objectChange;
      }
      return retVal;
    }
    return "undefined";
  }
}
TOP

Related Classes of org.olat.ims.qti.editor.tree.AssessmentNode

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.