/*******************************************************************************
 * Copyright (c) 2000, 2004 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials 
 * are made available under the terms of the Common Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/cpl-v10.html
 * 
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.ui.forms.widgets;
import org.eclipse.swt.SWT;
/**
 * This class is used to store layout data for the <code>ColumnLayout</code>
 * class. You can control width and height hints, as well as horizontal
 * alignment using instances of this class. As with other layouts, they are not
 * required to get the default behaviour.
 * 
 * @see ColumnLayout
 * @since 3.0
 */
public final class ColumnLayoutData {
	/**
	 * Width hint that will be used instead of the computed control width when
	 * used in conjunction with <code>ColumnLayout</code> class (default is
	 * SWT.DEFAULT).
	 */
	public int widthHint = SWT.DEFAULT;
	/**
	 * Height hint that will be used instead of the computed control height
	 * when used in conjunction with <code>ColumnLayout</code> class (default
	 * is SWT.DEFAULT).
	 */
	public int heightHint = SWT.DEFAULT;
	/**
	 * Horizontal alignment constant - control will be aligned to the left.
	 */
	public static final int LEFT = 1;
	/**
	 * Horizontal alignment constant - control will be aligned to the right.
	 */
	public static final int CENTER = 2;
	/**
	 * Horizontal alignment constant - control will be centered.
	 */
	public static final int RIGHT = 3;
	/**
	 * Horizontal alignment constant - control will fill the column.
	 */
	public static final int FILL = 4;
	/**
	 * Horizontal alignment variable (default is FILL).
	 */
	public int horizontalAlignment = FILL;
	/**
	 * Convinience constructor for the class.
	 * 
	 * @param wHint
	 *            width hint for the control
	 * @param hHint
	 *            height hint for the control
	 */
	public ColumnLayoutData(int wHint, int hHint) {
		this.widthHint = wHint;
		this.heightHint = hHint;
	}
	/**
	 * Convinience constructor for the class.
	 * 
	 * @param wHint
	 *            width hint for the control
	 */
	public ColumnLayoutData(int wHint) {
		this.widthHint = wHint;
	}
	/**
	 * The default constructor.
	 *  
	 */
	public ColumnLayoutData() {
	}
}