/* Box.java

	Purpose:
		
	Description:
		
	History:
		Fri Sep 16 13:59:54     2005, Created by tomyeh

Copyright (C) 2005 Potix Corporation. All Rights Reserved.

{{IS_RIGHT
	This program is distributed under LGPL Version 2.1 in the hope that
	it will be useful, but WITHOUT ANY WARRANTY.
}}IS_RIGHT
*/
package org.zkoss.web.servlet.dsp.action.html;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.zkoss.web.servlet.dsp.DspException;
import org.zkoss.web.servlet.dsp.action.AbstractAction;
import org.zkoss.web.servlet.dsp.action.ActionContext;

/**
 * Generates a box that has a caption and a border enclosing other tags.
 *
 * @author tomyeh
 */
public class Box extends AbstractAction {
	private String _align;
	private String _color = "black";
	private String _spacing = "3";
	private String _width = "100%";
	private String _caption;
	private boolean _shadow = false;

	/** Returns the horizontal alignment.
	 * Default: null.
	 */
	public String getAlign() {
		return _align;
	}

	/** Sets the horizontal alignment.
	 */
	public void setAlign(String align) {
		_align = align;
	}

	/** Returns the color.
	 * Default: black.
	 */
	public String getColor() {
		return _color;
	}

	/** Sets the color.
	 * <p>You might use any string that HTML supports.
	 */
	public void setColor(String color) {
		_color = color;
	}

	/** Returns whether this box has the shadow effect.
	 * Default: false.
	 */
	public boolean isShadow() {
		return _shadow;
	}

	/** Sets whether this box has the shadow effect.
	 */
	public void setShadow(boolean shadow) {
		_shadow = shadow;
	}

	/** Returns the spacing.
	 * Default: 3.
	 */
	public String getSpacing() {
		return _spacing;
	}

	/** Sets the spacing.
	 */
	public void setSpacing(String spacing) {
		_spacing = spacing;
	}

	/** Returns the width.
	 * Default: 100%.
	 */
	public String getWidth() {
		return _width;
	}

	/** Sets the width.
	 */
	public void setWidth(String width) {
		_width = width;
	}

	/** Returns the caption.
	 * Default: null (no caption at all).
	 */
	public String getCaption() {
		return _caption;
	}

	/** Sets the caption.
	 */
	public void setCaption(String caption) {
		_caption = caption;
	}

	public void render(ActionContext ac, boolean nested) throws DspException, IOException {
		if (!isEffective())
			return;

		final Map<String, Object> attrs = new HashMap<String, Object>();
		attrs.put("shadow", _shadow);
		if (_align != null)
			attrs.put("align", _align);
		if (_color != null)
			attrs.put("color", _color);
		if (_spacing != null)
			attrs.put("spacing", _spacing);
		if (_caption != null)
			attrs.put("caption", _caption);
		if (_width != null)
			attrs.put("width", _width);
		if (ac != null) {
			attrs.put("actionContext", ac);

			ac.include("~./dsp/action/html/box.dsp", attrs);
		}
	}

	//-- Object --//
	public String toString() {
		return "box";
	}
}
