/*
* File : ActivityBagElement.java
* Created : 19-dec-2000 15: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.Activity;
import edu.xtec.jclic.edit.Editable;
import edu.xtec.jclic.edit.Editor;
import edu.xtec.jclic.fileSystem.FileSystem;
import java.util.HashMap;
import java.util.Map;
/**
* This class stores a XML {@link org.jdom.Element} that defines an
* {@link edu.xtec.jclic.Activity}. It stores also a {@link java.util.HashMap}
* with references of other objects to this activity, and implements some
* useful methods to directly retrieve some properites of the related Activity,
* like its name. ActivityBagElements are usually stored into
* {@link edu.xtec.jclic.bags.ActivityBag} objects.
* @author Francesc Busquets (fbusquets@xtec.cat)
* @version 13.09.10
*/
public class ActivityBagElement extends Object implements Editable, Cloneable {
private org.jdom.Element element;
private Map<String, String> references;
/** Creates new ActivityBagElement */
public ActivityBagElement(org.jdom.Element e){
setData(e);
}
public String getName(){
return FileSystem.stdFn(element.getAttributeValue(Activity.NAME));
}
public void setData(org.jdom.Element e){
element=e;
references=null;
}
public org.jdom.Element getData(){
return element;
}
@Override
public String toString(){
return getName();
}
/** Getter for property dependences.
* @return Value of property dependences.
*/
public Map<String, String> getReferences() {
if(references==null && element!=null){
references=new HashMap<String, String>();
Activity.listReferences(element, references);
}
return references;
}
public Editor getEditor(Editor parent){
return Editor.createEditor(getClass().getName()+"Editor", this, parent);
}
@Override
public Object clone() throws CloneNotSupportedException {
ActivityBagElement result=(ActivityBagElement)super.clone();
result.references=null;
result.element=(org.jdom.Element)element.clone();
return result;
}
}