/**
 *
 */
package com.tootsville.tootsbook.client.util;

import com.google.gwt.user.client.rpc.IsSerializable;

/**
 * WRITEME: Document this type. twheys@gmail.com Dec 16, 2009
 * 
 * @author <a href="mailto:twheys@gmail.com@resinteractive.com">Tim
 *         Heys</a>
 */
public class ThemeItem implements IsSerializable {
	/**
	 * WRITEME: Document this type. twheys@gmail.com Dec 16, 2009
	 * 
	 * @author <a href="mailto:twheys@gmail.com@resinteractive.com">Tim
	 *         Heys</a>
	 */
	public static enum ThemeItemType implements IsSerializable {
		/**
		 * WRITEME: Document this field. twheys@gmail.com Dec 16, 2009
		 */
		avatarBG,
		/**
		 * WRITEME: Document this field. twheys@gmail.com Dec 16, 2009
		 */
		boxStyle,
		/**
		 * WRITEME: Document this field. twheys@gmail.com Dec 16, 2009
		 */
		icon,
		/**
		 * WRITEME: Document this field. twheys@gmail.com Dec 16, 2009
		 */
		pageBG,
		/**
		 * WRITEME: Document this field. twheys@gmail.com Dec 16, 2009
		 */
		titleBG
	}

	/**
	 * WRITEME twheys@gmail.com
	 */
	private String description;

	/**
	 * WRITEME twheys@gmail.com
	 */
	private int id = 0;

	/**
	 * WRITEME twheys@gmail.com
	 */
	private String name = "";

	/**
	 *
	 */
	private int slot;

	/**
	 *
	 */
	private ThemeItemType type;

	/**
	 * <pre>
	 * twheys@gmail.com Jan 20, 2010
	 * </pre>
	 * 
	 * A ThemeItem WRITEME...
	 */
	public ThemeItem () {
		// default constructor
	}

	/**
	 * WRITEME: Document this field. twheys@gmail.com Dec 16, 2009
	 * 
	 * @param newType WRITEME twheys@gmail.com
	 * @param newID WRITEME twheys@gmail.com
	 * @param newName WRITEME twheys@gmail.com
	 * @param newDescription WRITEME twheys@gmail.com
	 * @param slotNum WRITEME twheys@gmail.com
	 */
	public ThemeItem (final ThemeItemType newType, final int newID,
			final String newName, final String newDescription,
			final int slotNum) {
		type = newType;
		id = newID;
		name = newName;
		setSlot (slotNum);
		description = newDescription;
	}

	/**
	 * @return the description
	 */
	public String getDescription () {
		return description;
	}

	/**
	 * @return the id
	 */
	public int getId () {
		return id;
	}

	/**
	 * @return the name
	 */
	public String getName () {
		return name;
	}

	/**
	 * @return the slot
	 */
	public int getSlot () {
		return slot;
	}

	/**
	 * @return the type
	 */
	public ThemeItemType getType () {
		return type;
	}

	/**
	 * @param newDescription the description to set
	 */
	public void setDescription (final String newDescription) {
		description = newDescription;
	}

	/**
	 * @param newId the id to set
	 */
	public void setId (final int newId) {
		id = newId;
	}

	/**
	 * @param newName the name to set
	 */
	public void setName (final String newName) {
		name = newName;
	}

	/**
	 * @param newSlot the slot to set
	 */
	public void setSlot (final int newSlot) {
		slot = newSlot;
	}

	/**
	 * @param newType the type to set
	 */
	public void setType (final ThemeItemType newType) {
		type = newType;
	}
}
