/*
* File : CompoundObject.java
* Created : 17-feb-2003 10:12
* By : fbusquets
*
* JClic - Authoring and playing system for educational activities
*
* Copyright (C) 2000 - 2018 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 {
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;
}
}