/*
* File : CompoundObject.java
* Created : 17-feb-2003 10:12
* 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.util;
import java.io.Serializable;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.ImageIcon;
/**
* This class encapsulates three fields: a text identifier
, a
* label
and an icon
. The icon is always an external resource,
* accessible through an URL.
* @author Francesc Busquets (fbusquets@xtec.cat)
* @version 1.0
*/
public class CompoundObject implements Serializable {
protected String id=null;
protected String text=null;
protected String iconUrl=null;
private transient ImageIcon icon=null;
/** Creates a new instance of CompoundObject */
protected CompoundObject(){
}
/** Creates a new instance of CompoundObject */
public CompoundObject(String id, String text, String iconUrl){
this.id=id;
this.text=text;
this.iconUrl=iconUrl;
}
public boolean hasIcon(){
return iconUrl!=null && iconUrl.length()>0;
}
public ImageIcon getIcon(){
if(icon==null && iconUrl!=null && iconUrl.length()>0){
String s=iconUrl;
try{
// Modified 18/Jan/2010
// Try a more generic URL protocol detection
//
//if(!s.startsWith("http:"))
// s="file:/"+s;
URL url;
try {
url=new URL(s);
} catch(MalformedURLException mex){
url=new URL("file://"+s);
}
icon=new ImageIcon(url);
} catch(Exception ex){
System.err.println("Unable to read image "+iconUrl+"\n"+ex);
}
}
return icon;
}
public void clearIcon(){
icon=null;
}
/** Getter for property id.
* @return Value of property id.
*/
public java.lang.String getId() {
return id;
}
/** Setter for property id.
* @param id New value of property id.
*/
public void setId(java.lang.String id) {
this.id = id;
}
/** Getter for property text.
* @return Value of property text.
*/
public java.lang.String getText() {
return text;
}
/** Setter for property text.
* @param text New value of property text.
*/
public void setText(java.lang.String text) {
this.text = text;
}
/** Getter for property iconUrl.
* @return Value of property iconUrl.
*/
public java.lang.String getIconUrl() {
return iconUrl;
}
/** Setter for property iconUrl.
* @param iconUrl New value of property iconUrl.
*/
public void setIconUrl(java.lang.String iconUrl) {
this.iconUrl = iconUrl;
}
}