/*******************************************************************************
 * Copyright (c) 2009, 2010 Oracle. All rights reserved.
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v1.0, which accompanies this distribution
 * and is available at http://www.eclipse.org/legal/epl-v10.html.
 * 
 * Contributors:
 *     Oracle - initial API and implementation
 ******************************************************************************/
package org.eclipse.jpt.common.ui.internal.utility.swt;

import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
import org.eclipse.swt.widgets.Control;

/**
 * This controller enables a boolean model to control either the
 * <em>enabled</em> or <em>visible</em> properties of an SWT control; i.e. the
 * control's property is kept in synch with the boolean model,
 * but <em>not</em> vice-versa.
 * <p>
 * Once the control is disposed, this controller is kaput.
 * 
 * @see PropertyValueModel
 * @see Control#setEnabled(boolean)
 * @see Control#setVisible(boolean)
 */
final class SimpleBooleanStateController
	extends BooleanStateController
{
	private final Control control;


	// ********** constructor **********

	/**
	 * Constructor - the boolean model, the control, and the adapter are required.
	 */
	SimpleBooleanStateController(
			PropertyValueModel<Boolean> booleanModel,
			Control control,
			boolean defaultValue,
			Adapter adapter
	) {
		super(booleanModel, defaultValue, adapter);
		if (control == null) {
			throw new NullPointerException();
		}
		this.control = control;
		this.engageBooleanModel();
		this.engageControl(control);
		this.setControlState(control, this.getBooleanValue());
	}


	// ********** controls **********

	@Override
	void setControlState(boolean b) {
		this.setControlState(this.control, b);
	}

	@Override
	void controlDisposed(Control c) {
		super.controlDisposed(c);
		this.disengageBooleanModel();
	}

}
