/*
* File : MenuElement.java
* Created : 21-may-2002 9:28
* 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.activities.panels;
import edu.xtec.jclic.bags.MediaBag;
import edu.xtec.jclic.edit.*;
import edu.xtec.jclic.fileSystem.FileSystem;
import edu.xtec.util.Domable;
import edu.xtec.util.JDomUtility;
import javax.swing.ImageIcon;
/**
*
* @author Francesc Busquets (fbusquets@xtec.cat)
* @version 13.08.28
*/
public class MenuElement implements Editable, Cloneable, Domable{
public String caption;
public String icon;
public String projectPath;
public String sequence;
public String description;
public MenuElement(){
icon=DEFAULT_ICON;
}
public static final String ELEMENT_NAME="menuElement";
public static final String CAPTION="caption", ICON="icon", PATH="path", SEQUENCE="sequence", DESCRIPTION="description";
public static final String RETURN_TAG="@RETURN";
public static final String DEFAULT_ICON="@ico00.png", DEFAULT_FOLDER_ICON="@icofolder.png";
public static final int MAX_ICON_WIDTH=32, MAX_ICON_HEIGHT=32;
public org.jdom.Element getJDomElement(){
org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME);
if(caption!=null)
e.setAttribute(CAPTION, caption);
if(icon!=null && !icon.equals(DEFAULT_ICON))
e.setAttribute(ICON, icon);
if(projectPath!=null)
e.setAttribute(PATH, projectPath);
if(sequence!=null)
e.setAttribute(SEQUENCE, sequence);
if(description!=null)
e.setAttribute(DESCRIPTION, description);
return e;
}
public ImageIcon getIcon(MediaBag mb){
ImageIcon result=null;
if(icon.startsWith("@")){
String fn=icon.substring(1);
// ico files converted to png
if(fn.endsWith(".gif") && fn.startsWith("ico"))
fn=fn.substring(0, fn.length()-4)+".png";
result=edu.xtec.util.ResourceManager.getImageIcon("icons/"+fn);
}
else{
try{
result=new ImageIcon(mb.getImageElement(icon).getImage());
result.setDescription(icon);
} catch(Exception ex){
System.err.println("Error reading image "+icon+"\n"+ex);
}
}
if(result==null)
result=edu.xtec.util.ResourceManager.getImageIcon("icons/ico00.png");
return result;
}
public static MenuElement getMenuElement(org.jdom.Element e) throws Exception{
JDomUtility.checkName(e, ELEMENT_NAME);
MenuElement me=new MenuElement();
me.setProperties(e, null);
return me;
}
public void setProperties(org.jdom.Element e, Object aux) throws Exception{
JDomUtility.checkName(e, ELEMENT_NAME);
caption=JDomUtility.getStringAttr(e, CAPTION, caption, false);
sequence=JDomUtility.getStringAttr(e, SEQUENCE, sequence, false);
description=JDomUtility.getStringAttr(e, DESCRIPTION, description, false);
projectPath=FileSystem.stdFn(JDomUtility.getStringAttr(e, PATH, projectPath, false));
icon=projectPath==null ? DEFAULT_FOLDER_ICON : DEFAULT_ICON;
icon=FileSystem.stdFn(JDomUtility.getStringAttr(e, ICON, icon, false));
}
public Editor getEditor(Editor parent){
return Editor.createEditor(getClass().getName()+"Editor", this, parent);
}
}