/* DefaultBinder.java

	Purpose:
		
	Description:
		
	History:
		2011/12/21 Created by Dennis Chen

Copyright (C) 2011 Potix Corporation. All Rights Reserved.
*/

package org.zkoss.bind;

import java.util.Map;

import org.zkoss.bind.impl.BinderImpl;
import org.zkoss.bind.impl.BinderUtil;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.EventQueues;

/**
 * ZK default Binder, use this class if you want to new a binder and control components though {@link Binder} API. <br/>
 * After new a instance, you have to call {@link #init(Component, Object)} first, then call 
 * {@link #addCommandBinding(Component, String, String, java.util.Map)}, {@link #addPropertyLoadBindings(Component, String, String, String[], String[], java.util.Map, String, java.util.Map)}
 * ...etc to assign the binding.<br/>
 * After all the add binding done, you have to call {@link #loadComponent(Component, boolean)} to trigger first loading of the binding. <br/> 
 * @author dennischen
 * @since 6.0.0
 */
public class DefaultBinder extends BinderImpl {
	private static final long serialVersionUID = 1463169907348730644L;

	/**
	 * new a binder with default event queue name and scope
	 */
	public DefaultBinder() {
		this(null, null);
	}

	/**
	 * new a binder with event queue name and scope
	 * @param qname event queue name
	 * @param qscope event queue scope, see {@link EventQueues}
	 */
	public DefaultBinder(String qname, String qscope) {
		super(qname, qscope);
	}

	public void init(Component comp, Object vm, Map<String, Object> initArgs) {
		super.init(comp, vm, initArgs);
		//mark this component was handled by binder after init
		BinderUtil.markHandling(comp, this);
	}
}
