/* If.java

	Purpose:
		
	Description:
		
	History:
		Tue Sep  6 15:33:06     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;

import java.io.IOException;
import java.io.StringWriter;

import org.zkoss.web.servlet.dsp.DspException;

/**
 * Tests whether an condition is true and render the child only
 * if the condition is true.
 *
 * @author tomyeh
 */
public class If extends AbstractAction {
	private boolean _cond, _trim;

	/** Returns the test result. */
	public boolean getTest() {
		return _cond;
	}

	/** Sets the test result. */
	public void setTest(boolean cond) {
		_cond = cond;
	}

	/** Returns whether to trim the result.
	 * <p>Default: true.
	 */
	public boolean isTrim() {
		return _trim;
	}

	/** Sets whether to trim the result. */
	public void setTrim(boolean trim) {
		_trim = trim;
	}

	//-- Action --//
	public void render(ActionContext ac, boolean nested) throws DspException, IOException {
		if (nested && _cond && isEffective()) {
			final StringWriter out = getFragmentOut(ac, _trim);
			renderFragment(ac, out, _trim);
			if (out != null)
				ac.getOut().write(out.toString());
		}
	}

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