/*
 * Copyright (c) 2009 WiQuery team
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */
package org.odlabs.wiquery.ui.button;

import org.odlabs.wiquery.core.options.IComplexOption;
import org.odlabs.wiquery.core.options.LiteralOption;
import org.odlabs.wiquery.ui.themes.UiIcon;

/**
 * $Id$
 * <p>
 * Bean for the icon option into the Button component
 * </p>
 * 
 * @author Julien Roche
 * @author Ernesto Reinaldo
 * @since 1.1
 */
public class ButtonIcon extends Object implements IComplexOption
{
	// Constants
	/** Constant of serialization */
	private static final long serialVersionUID = 4723376695783554832L;

	// Properties
	private String primary;

	private String secondary;

	/**
	 * Default constructor
	 * 
	 * @param primary
	 *            (can be null)
	 * @param secondary
	 *            (can be null)
	 */
	public ButtonIcon(String primary, String secondary)
	{
		super();
		this.primary = primary;
		this.secondary = secondary;
	}

	/**
	 * Constructor accepting enumeration.
	 * 
	 * @param primary
	 * @param secondary
	 */
	public ButtonIcon(UiIcon primary, UiIcon secondary)
	{
		super();
		if (primary == null)
			throw new IllegalArgumentException("Primary UI icon should be non-null");
		this.primary = primary.getCssClass();
		if (secondary != null)
			this.secondary = secondary.getCssClass();
	}

	/**
	 * Method retrieving the class for the primary icon
	 * 
	 * @return the class for the primary icon
	 */
	public String getPrimary()
	{
		return primary;
	}

	/**
	 * Method retrieving the class for the secondary icon
	 * 
	 * @return the class for the secondary icon
	 */
	public String getSecondary()
	{
		return secondary;
	}

	@Override
	public CharSequence getJavascriptOption()
	{
		StringBuilder buffer = new StringBuilder();
		buffer.append('{');

		if (primary != null && secondary != null)
		{
			buffer.append("primary: " + new LiteralOption(primary));
			buffer.append(", secondary: " + new LiteralOption(secondary));

		}
		else if (primary != null)
		{
			buffer.append("primary: " + new LiteralOption(primary));

		}
		else if (secondary != null)
		{
			buffer.append("secondary: " + new LiteralOption(secondary));
		}

		buffer.append('}');

		return buffer.toString();
	}

	/**
	 * Method setting the class for the primary icon
	 * 
	 * @param primary
	 */
	public void setHeaderClass(String primary)
	{
		this.primary = primary;
	}

	/**
	 * Method setting the class for the secondary icon
	 * 
	 * @param secondary
	 */
	public void setHeaderSelectedClass(String secondary)
	{
		this.secondary = secondary;
	}
}

@@ -1389,18 +1389,17 @@
  %3C/p%3E%0A *
- 
 %0A
+
  * @auth
@@ -1488,23 +1488,8 @@
 con 
-extends Object 
 impl
@@ -1726,25 +1726,24 @@
 structor%0A%09 *
- 
 %0A%09 * @param 
@@ -2004,25 +2004,24 @@
 eration.%0A%09 *
- 
 %0A%09 * @param 
@@ -2135,17 +2135,17 @@
 primary 
-=
+!
 = null)%0A
@@ -2149,84 +2149,8 @@
 l)%0A%09
-%09%09throw new IllegalArgumentException(%22Primary UI icon should be non-null%22);%0A
 %09%09th
@@ -2312,33 +2312,32 @@
 primary icon%0A%09 *
- 
 %0A%09 * @return the
@@ -2481,25 +2481,24 @@
 ary icon%0A%09 *
- 
 %0A%09 * @return
@@ -3203,33 +3203,32 @@
 primary icon%0A%09 *
- 
 %0A%09 * @param prim
@@ -3370,20 +3370,19 @@
 ry icon%0A
+
 %09 *
- 
 %0A%09 * @pa

add support to Primary UI icon to be null