blob: 9f38cbc7c2037ec0ffa471bfc0b1e6f7c73f53ec [file] [log] [blame]
package org.eclipse.swt.layout;
/*
* Copyright (c) 2000, 2002 IBM Corp. All rights reserved.
* This file is 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
*/
import org.eclipse.swt.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.widgets.*;
/**
* <code>GridData</code> is the layout data object associated with
* <code>GridLayout</code>. To set a <code>GridData</code> object into a
* control, you use the <code>setLayoutData ()</code> method.
* <p>
* There are two ways to create a <code>GridData</code> object with certain
* fields set. The first is to set the fields directly, like this:
* <pre>
* GridData gridData = new GridData();
* gridData.horizontalAlignment = GridData.FILL;
* gridData.grabExcessHorizontalSpace = true;
* button1.setLayoutData(gridData);
* </pre>
* The second is to take advantage of convenience style bits defined
* by <code>GridData</code>:
* <pre>
* button1.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));
* </pre>
* </p>
* <p>
* NOTE: Do not reuse <code>GridData</code> objects. Every control in a
* <code>Composite</code> that is managed by a <code>GridLayout</code>
* must have a unique <code>GridData</code> object. If the layout data
* for a control in a <code>GridLayout</code> is null at layout time,
* a unique <code>GridData</code> object is created for it.
* </p>
*
* @see GridLayout
*/
public final class GridData {
/**
* verticalAlignment specifies how controls will be positioned
* vertically within a cell.
*
* The default value is CENTER.
*
* Possible values are:
*
* BEGINNING: Position the control at the top of the cell
* CENTER: Position the control in the vertical center of the cell
* END: Position the control at the bottom of the cell
* FILL: Resize the control to fill the cell vertically
*/
public int verticalAlignment = CENTER;
/**
* horizontalAlignment specifies how controls will be positioned
* horizontally within a cell.
*
* The default value is BEGINNING.
*
* Possible values are:
*
* BEGINNING: Position the control at the left of the cell
* CENTER: Position the control in the horizontal center of the cell
* END: Position the control at the right of the cell
* FILL: Resize the control to fill the cell horizontally
*/
public int horizontalAlignment = BEGINNING;
/**
* widthHint specifies a minimum width for the column. A value of
* SWT.DEFAULT indicates that no minimum width is specified.
*
* The default value is SWT.DEFAULT.
*/
public int widthHint = SWT.DEFAULT;
/**
* heightHint specifies a minimum height for the row. A value of
* SWT.DEFAULT indicates that no minimum height is specified.
*
* The default value is SWT.DEFAULT.
*/
public int heightHint = SWT.DEFAULT;
/**
* horizontalIndent specifies the number of pixels of indentation
* that will be placed along the left side of the cell.
*
* The default value is 0.
*/
public int horizontalIndent = 0;
/**
* horizontalSpan specifies the number of column cells that the control
* will take up.
*
* The default value is 1.
*/
public int horizontalSpan = 1;
/**
* verticalSpan specifies the number of row cells that the control
* will take up.
*
* The default value is 1.
*/
public int verticalSpan = 1;
/**
* grabExcessHorizontalSpace specifies whether the cell will be made
* wide enough to fit the remaining horizontal space.
*
* The default value is false.
*/
public boolean grabExcessHorizontalSpace = false;
/**
* grabExcessVerticalSpace specifies whether the cell will be made
* tall enough to fit the remaining vertical space.
*
* The default value is false.
*/
public boolean grabExcessVerticalSpace = false;
// Alignment constants.
public static final int BEGINNING = 1;
public static final int CENTER = 2;
public static final int END = 3;
public static final int FILL = 4;
// Style constants
public static final int VERTICAL_ALIGN_BEGINNING = 1 << 1;
public static final int VERTICAL_ALIGN_CENTER = 1 << 2;
public static final int VERTICAL_ALIGN_END = 1 << 3;
public static final int VERTICAL_ALIGN_FILL = 1 << 4;
public static final int HORIZONTAL_ALIGN_BEGINNING = 1 << 5;
public static final int HORIZONTAL_ALIGN_CENTER = 1 << 6;
public static final int HORIZONTAL_ALIGN_END = 1 << 7;
public static final int HORIZONTAL_ALIGN_FILL = 1 << 8;
public static final int GRAB_HORIZONTAL = 1 << 9;
public static final int GRAB_VERTICAL = 1 << 10;
// Style convenience constants
/**
* FILL_VERTICAL = VERTICAL_ALIGN_FILL | GRAB_VERTICAL
*/
public static final int FILL_VERTICAL = VERTICAL_ALIGN_FILL | GRAB_VERTICAL;
/**
* FILL_HORIZONTAL = HORIZONTAL_ALIGN_FILL | GRAB_HORIZONTAL
*/
public static final int FILL_HORIZONTAL = HORIZONTAL_ALIGN_FILL | GRAB_HORIZONTAL;
/**
* FILL_BOTH = FILL_VERTICAL | FILL_HORIZONTAL
*/
public static final int FILL_BOTH = FILL_VERTICAL | FILL_HORIZONTAL;
// Private
int childIndex;
boolean isItemData = true;
int hSpan;
public GridData() {
super();
}
public GridData(int style) {
super();
if ((style & VERTICAL_ALIGN_BEGINNING) != 0)
verticalAlignment = BEGINNING;
if ((style & VERTICAL_ALIGN_CENTER) != 0)
verticalAlignment = CENTER;
if ((style & VERTICAL_ALIGN_FILL) != 0)
verticalAlignment = FILL;
if ((style & VERTICAL_ALIGN_END) != 0)
verticalAlignment = END;
if ((style & HORIZONTAL_ALIGN_BEGINNING) != 0)
horizontalAlignment = BEGINNING;
if ((style & HORIZONTAL_ALIGN_CENTER) != 0)
horizontalAlignment = CENTER;
if ((style & HORIZONTAL_ALIGN_FILL) != 0)
horizontalAlignment = FILL;
if ((style & HORIZONTAL_ALIGN_END) != 0)
horizontalAlignment = END;
if ((style & GRAB_HORIZONTAL) != 0)
grabExcessHorizontalSpace = true;
else
grabExcessHorizontalSpace = false;
if ((style & GRAB_VERTICAL) != 0)
grabExcessVerticalSpace = true;
else
grabExcessVerticalSpace = false;
}
boolean isItemData() {
return isItemData;
}
boolean isSpacerData() {
return !isItemData;
}
}