/*
* File : JumpInfo.java
* Created : 04-jan-2002 16:52
* By : fbusquets
*
* JClic - Authoring and playing system for educational activities
*
* Copyright (C) 2000 - 2005 Francesc Busquets & Departament
* d'Educacio de la Generalitat de Catalunya
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details (see the LICENSE file).
*/
package edu.xtec.jclic.bags;
import edu.xtec.jclic.Constants;
import edu.xtec.util.Domable;
import edu.xtec.util.JDomUtility;
import java.util.Map;
/**
* This class contains information about what the sequence manager of JClic must do
* in specific circumstances: when an activity finishes, when the user clicks on the
* "next" and "prev" buttons, or when a special active content is activated. Different
* kinds of actions are possible: to go back to a previous point in the sequence, to exit
* the program, to stop (do nothing), to jump to a specific point in the sequence of activities
* or to jump to another JClic project.
* @author Francesc Busquets (fbusquets@xtec.cat)
* @version 13.09.10
*/
public class JumpInfo implements Domable, Cloneable{
public static final int JUMP=0, STOP=1, RETURN=2, EXIT=3;
public int action;
public String projectPath;
public String sequence;
public int actNum;
/** Creates new JumpInfo */
public JumpInfo(int action){
this(action, null);
}
public JumpInfo(int action, String sequence){
this.action=action;
this.sequence=sequence;
projectPath=null;
actNum=-1;
}
public JumpInfo(int action, int actNum){
this.action=action;
this.actNum=actNum;
projectPath=null;
sequence=null;
}
public static final String[] actions={"JUMP", "STOP", "RETURN", "EXIT"};
public static final String ELEMENT_NAME="jump", ACTION="action",
TAG="tag", PROJECT="project";
public org.jdom.Element getJDomElement(){
org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME);
if(action!=JUMP)
e.setAttribute(ACTION, actions[action]);
else{
if(sequence!=null)
e.setAttribute(TAG, sequence);
if(projectPath!=null)
e.setAttribute(PROJECT, projectPath);
}
return e;
}
public void setProperties(org.jdom.Element e, Object aux) throws Exception{
JDomUtility.checkName(e, ELEMENT_NAME);
action=JDomUtility.getStrIndexAttr(e, ACTION, actions, JUMP);
if(action==JUMP){
sequence=JDomUtility.getStringAttr(e, TAG, sequence, false);
projectPath=JDomUtility.getStringAttr(e, PROJECT, projectPath, false);
}
}
public void listReferences(String type, Map<String, String> map) {
if(action==JUMP){
if(projectPath!=null){
if(type==null || type.equals(Constants.EXTERNAL_OBJECT))
map.put(projectPath, Constants.EXTERNAL_OBJECT);
}
else if(sequence!=null){
if(type==null || type.equals(Constants.SEQUENCE_OBJECT))
map.put(sequence, Constants.SEQUENCE_OBJECT);
}
}
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}