blob: 7e776e0ac9ce5a7b9226108e7fad76ebd92da5f7 [file] [log] [blame]
/*******************************************************************************
* 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 Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.forms.widgets;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
/**
* Layout data used in conjunction with <code>HTMLTableLayout</code>.
* Children in a composite that uses this layout should call <samp>setLayoutData
* </samp> and pass an instance of this class to control physical placement in
* the parent.
*
* @see TableWrapLayout
* @since 3.0
*/
public final class TableWrapData {
/**
* The control will be left-justified.
*/
public static final int LEFT = 1 << 1;
/**
* The control will be centered horizontally.
*/
public static final int CENTER = 1 << 2;
/**
* The control will be right-justified.
*/
public static final int RIGHT = 1 << 3;
/**
* The control will be aligned with the top of the cell.
*/
public static final int TOP = 1 << 4;
/**
* The control will be centered vertically.
*/
public static final int MIDDLE = 1 << 5;
/**
* The control will be aligned with the bottom of the cell.
*/
public static final int BOTTOM = 1 << 6;
/**
* The control will have the same width as the column it occupies.
*/
public static final int FILL = 1 << 7;
/**
* In addition to filling width or height, the control will take part in
* allocation of any excess space. Note that this constant can only be
* passed to the constructor (cannot be directly assigned to
* <code>align</code> variable).
*/
public static final int FILL_GRAB = 1 << 8;
/**
* Number of columns to span (default is 1).
*/
public int colspan = 1;
/**
* Number of rows to span (default is 1).
*/
public int rowspan = 1;
/**
* Horizontal alignment (LEFT, CENTER, RIGHT or FILL; default is LEFT).
*/
public int align = LEFT;
/**
* Vertical alignment (TOP, MIDDLE, BOTTOM or FILL; default is TOP).
*/
public int valign = TOP;
/**
* Horizontal indent (default is 0).
*/
public int indent = 0;
/**
* Maximum width of the control (default is SWT.DEFAULT).
*/
public int maxWidth = SWT.DEFAULT;
/**
* Maximum height of the control (default is SWT.DEFAULT).
*/
public int maxHeight = SWT.DEFAULT;
/**
* Height hint of the control (default is SWT.DEFAULT).
*/
public int heightHint = SWT.DEFAULT;
/**
* If <code>true</code>, take part in excess horizontal space
* distribution. (default is <code>false</code>).
*/
public boolean grabHorizontal;
/**
* If <code>true</code>, will grab any excess vertical space (default is
* <code>false</code>). Note that since TableWrapLayout works top-down
* and does not grows to fill the parent, this only applies to local excess
* space created by fixed-height children that span multiple rows.
*/
public boolean grabVertical;
int childIndex;
boolean isItemData = true;
int compWidth;
Point compSize;
/**
* The default constructor.
*/
public TableWrapData() {
}
/**
* The convinience constructor - allows passing the horizontal alignment
* style.
*
* @param align
* horizontal alignment (LEFT, MIDDLE, RIGHT, FILL or FILL_GRAB).
*/
public TableWrapData(int align) {
this(align, TOP, 1, 1);
}
/**
* The convinience constructor - allows passing the alignment styles.
*
* @param align
* horizontal alignment (LEFT, CENTER, RIGHT, FILL or FILL_GRAB).
* @param valign
* vertical alignment (TOP, MIDDLE, BOTTOM, FILL or FILL_GRAB).
*/
public TableWrapData(int align, int valign) {
this(align, valign, 1, 1);
}
/**
* The convinience constructor - allows passing the alignment styles, column
* and row spans.
*
* @param align
* horizontal alignment (LEFT, CENTER, RIGHT, FILL or FILL_GRAB).
* @param valign
* vertical alignment (TOP, MIDDLE, BOTTOM, FILL or FILL_GRAB)
* @param rowspan
* row span (1 or more)
* @param colspan
* column span (1 or more)
*/
public TableWrapData(int align, int valign, int rowspan, int colspan) {
if (align != LEFT && align != CENTER && align != RIGHT && align != FILL
&& align != FILL_GRAB)
SWT.error(SWT.ERROR_INVALID_ARGUMENT, null, "align"); //$NON-NLS-1$
if (valign != TOP && valign != MIDDLE && valign != BOTTOM
&& valign != FILL && valign != FILL_GRAB)
SWT.error(SWT.ERROR_INVALID_ARGUMENT, null, "valign"); //$NON-NLS-1$
if (rowspan < 1)
SWT.error(SWT.ERROR_INVALID_ARGUMENT, null, "rowspan"); //$NON-NLS-1$
if (colspan < 1)
SWT.error(SWT.ERROR_INVALID_ARGUMENT, null, "colspan"); //$NON-NLS-1$
if (align == FILL_GRAB) {
this.align = FILL;
grabHorizontal = true;
} else
this.align = align;
if (valign == FILL_GRAB) {
this.valign = FILL;
grabVertical = true;
} else
this.valign = valign;
this.rowspan = rowspan;
this.colspan = colspan;
}
}