/* AbortBySendRedirect.java

	Purpose:
		
	Description:
		
	History:
		Sun Apr 30 18:15:25     2006, Created by tomyeh

Copyright (C) 2006 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.zk.ui.impl;

import org.zkoss.zk.au.AuResponse;
import org.zkoss.zk.au.out.AuSendRedirect;
import org.zkoss.zk.ui.sys.AbortingReason;

/**
 * The aborting reason for send-redirect.
 * In other words, the client will redirect the specified URL.
 *
 * @author tomyeh
 */
public class AbortBySendRedirect implements AbortingReason {
	private final String _url;
	private final String _target;

	/** Constructs an aborting reason for send-redirect.
	 *
	 * @param url the target URL, never null.
	 * @param target the target browser window, or null to use the current one.
	 */
	public AbortBySendRedirect(String url, String target) {
		if (url == null)
			throw new IllegalArgumentException("null");
		_url = url;
		_target = target;
	}

	//-- AbortingReason --//
	public boolean isAborting() {
		return !_url.startsWith("mailto:") && !_url.startsWith("javascript:")
				&& (_target == null || "_self".equals(_target));
	}

	public void execute() {
	}

	public AuResponse getResponse() {
		return new AuSendRedirect(_url, _target);
	}

	public void finish() {
	}
}
