1765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye/*******************************************************************************
2765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Copyright (c) 2005, 2011 IBM Corporation and others.
3765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * All rights reserved. This program and the accompanying materials
4765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * are made available under the terms of the Eclipse Public License v1.0
5765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * which accompanies this distribution, and is available at
6765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * http://www.eclipse.org/legal/epl-v10.html
7765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
8765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Contributors:
9765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     IBM Corporation - initial API and implementation
10765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *******************************************************************************/
11765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyepackage org.eclipse.wb.internal.core.utils.ui;
12765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
13765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.graphics.Point;
14765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.layout.GridData;
15765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.widgets.Control;
16765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
17765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye/**
18765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * This class provides a convienient shorthand for creating and initializing GridData. This offers
19765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * several benefits over creating GridData normal way:
20765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
21765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * <ul>
22765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * <li>The same factory can be used many times to create several GridData instances</li>
23765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * <li>The setters on GridDataFactory all return "this", allowing them to be chained</li>
24765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * <li>GridDataFactory uses vector setters (it accepts Points), making it easy to set X and Y values
25765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * together</li>
26765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * </ul>
27765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
28765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * <p>
29765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * GridDataFactory instances are created using one of the static methods on this class.
30765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * </p>
31765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
32765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * <p>
33765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Example usage:
34765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * </p>
35765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * <code>
36765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
37765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * ////////////////////////////////////////////////////////////
38765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * // Example 1: Typical grid data for a non-wrapping label
39765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
40765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     // GridDataFactory version
41765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     GridDataFactory.fillDefaults().applyTo(myLabel);
42765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
43765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     // Equivalent SWT version
44765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     GridData labelData = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL);
45765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     myLabel.setLayoutData(labelData);
46765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
47765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * ///////////////////////////////////////////////////////////
48765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * // Example 2: Typical grid data for a wrapping label
49765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
50765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     // GridDataFactory version
51765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     GridDataFactory.fillDefaults()
52765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *          .align(SWT.FILL, SWT.CENTER)
53765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *    	    .hint(150, SWT.DEFAULT)
54765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *    	    .grab(true, false)
55765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *          .applyTo(wrappingLabel);
56765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
57765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     // Equivalent SWT version
58765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     GridData wrappingLabelData = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_CENTER);
59765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     wrappingLabelData.minimumWidth = 1;
60765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     wrappingLabelData.widthHint = 150;
61765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     wrappingLabel.setLayoutData(wrappingLabelData);
62765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
63765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * //////////////////////////////////////////////////////////////
64765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * // Example 3: Typical grid data for a scrollable control (a list box, tree, table, etc.)
65765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
66765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     // GridDataFactory version
67765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     GridDataFactory.fillDefaults().grab(true, true).hint(150, 150).applyTo(listBox);
68765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
69765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     // Equivalent SWT version
70765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     GridData listBoxData = new GridData(GridData.FILL_BOTH);
71765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     listBoxData.widthHint = 150;
72765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     listBoxData.heightHint = 150;
73765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     listBoxData.minimumWidth = 1;
74765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     listBoxData.minimumHeight = 1;
75765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     listBox.setLayoutData(listBoxData);
76765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
77765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * /////////////////////////////////////////////////////////////
78765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * // Example 4: Typical grid data for a button
79765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
80765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     // GridDataFactory version
81765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     Point preferredSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, false);
82765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     Point hint = Geometry.max(LayoutConstants.getMinButtonSize(), preferredSize);
83765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).hint(hint).applyTo(button);
84765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
85765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     // Equivalent SWT version
86765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     Point preferredSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT, false);
87765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     Point hint = Geometry.max(LayoutConstants.getMinButtonSize(), preferredSize);
88765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     GridData buttonData = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER);
89765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     buttonData.widthHint = hint.x;
90765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     buttonData.heightHint = hint.y;
91765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *     button.setLayoutData(buttonData);
92765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * </code>
93765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
94765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * <p>
95765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * IMPORTANT: WHEN ASSIGNING LAYOUT DATA TO A CONTROL, BE SURE TO USE
96765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * gridDataFactory.applyTo(control) AND NEVER control.setLayoutData(gridDataFactory).
97765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * </p>
98765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
99765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @since 3.2
100765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */
101765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyepublic final class GridDataFactory {
102765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  private final Control m_control;
103765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  private final PixelConverter m_pixelConverter;
104765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  private final GridData m_data;
105765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
106765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
107765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
108765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  // Constructor
109765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
110765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
111765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  private GridDataFactory(Control control, GridData gridData) {
112765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_control = control;
113765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_pixelConverter = new PixelConverter(m_control);
114765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    //
115765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data = gridData;
116765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    if (m_control.getLayoutData() != m_data) {
117765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      m_control.setLayoutData(m_data);
118765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    }
119765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
120765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
121765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
122765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Creates new {@link GridDataFactory} with new {@link GridData}.
123765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
124765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static GridDataFactory create(Control control) {
125765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return new GridDataFactory(control, new GridData());
126765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
127765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
128765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
129765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Creates new {@link GridDataFactory} for modifying {@link GridData} already installed in
130765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * control.
131765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
132765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public static GridDataFactory modify(Control control) {
133765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    GridData gridData;
134765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    {
135765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      Object existingLayoutData = control.getLayoutData();
136765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      if (existingLayoutData instanceof GridData) {
137765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye        gridData = (GridData) existingLayoutData;
138765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      } else {
139765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye        gridData = new GridData();
140765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      }
141765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    }
142765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return new GridDataFactory(control, gridData);
143765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
144765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
145765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
146765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
147765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  // Span
148765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
149765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
150765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
151765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the GridData span. The span controls how many cells are filled by the control.
152765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
153765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param hSpan
154765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          number of columns spanned by the control
155765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param vSpan
156765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          number of rows spanned by the control
157765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
158765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
159765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory span(int hSpan, int vSpan) {
160765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.horizontalSpan = hSpan;
161765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.verticalSpan = vSpan;
162765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return this;
163765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
164765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
165765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
166765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the GridData span. The span controls how many cells are filled by the control.
167765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
168765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param hSpan
169765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          number of columns spanned by the control
170765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
171765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
172765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory spanH(int hSpan) {
173765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.horizontalSpan = hSpan;
174765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return this;
175765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
176765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
177765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
178765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the GridData span. The span controls how many cells are filled by the control.
179765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
180765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param vSpan
181765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          number of rows spanned by the control
182765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
183765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
184765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory spanV(int vSpan) {
185765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.verticalSpan = vSpan;
186765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return this;
187765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
188765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
189765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
190765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
191765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  // Hint
192765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
193765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
194765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
195765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the width and height hints. The width and height hints override the control's preferred
196765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * size. If either hint is set to SWT.DEFAULT, the control's preferred size is used.
197765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
198765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param xHint
199765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          horizontal hint (pixels), or SWT.DEFAULT to use the control's preferred size
200765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param yHint
201765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          vertical hint (pixels), or SWT.DEFAULT to use the control's preferred size
202765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
203765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
204765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory hint(int xHint, int yHint) {
205765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.widthHint = xHint;
206765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.heightHint = yHint;
207765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return this;
208765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
209765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
210765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
211765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets hint in chars.
212765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
213765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory hintC(int xHintInChars, int yHintInChars) {
214765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    hintHC(xHintInChars);
215765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    hintVC(yHintInChars);
216765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return this;
217765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
218765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
219765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
220765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the width hint.
221765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
222765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
223765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
224765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory hintH(int xHint) {
225765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.widthHint = xHint;
226765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return this;
227765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
228765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
229765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
230765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the width hint to the minimum of current hint and given <code>otherHint</code>.
231765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
232765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
233765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
234765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory hintHMin(int otherHint) {
235765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.widthHint = Math.min(m_data.widthHint, otherHint);
236765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return this;
237765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
238765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
239765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
240765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the width hint in chars.
241765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
242765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
243765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
244765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory hintHC(int hintInChars) {
245765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return hintH(m_pixelConverter.convertWidthInCharsToPixels(hintInChars));
246765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
247765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
248765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
249765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the width hint.
250765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
251765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
252765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
253765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory hintHU(int hintInDLU) {
254765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return hintH(m_pixelConverter.convertHorizontalDLUsToPixels(hintInDLU));
255765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
256765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
257765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
258765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the height hint.
259765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
260765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
261765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
262765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory hintV(int yHint) {
263765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.heightHint = yHint;
264765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return this;
265765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
266765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
267765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
268765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the height hint in chars.
269765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
270765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
271765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
272765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory hintVC(int hintInChars) {
273765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return hintV(m_pixelConverter.convertHeightInCharsToPixels(hintInChars));
274765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
275765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
276765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
277765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Increments horizontal hint on given value.
278765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
279765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
280765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
281765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory hintHAdd(int increment) {
282765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return hintV(m_data.widthHint + increment);
283765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
284765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
285765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
286765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Increments vertical hint on given value.
287765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
288765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
289765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
290765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory hintVAdd(int increment) {
291765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return hintV(m_data.heightHint + increment);
292765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
293765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
294765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
295765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the width and height hints. The width and height hints override the control's preferred
296765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * size. If either hint is set to SWT.DEFAULT, the control's preferred size is used.
297765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
298765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param hint
299765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          size (pixels) to be used instead of the control's preferred size. If the x or y values
300765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          are set to SWT.DEFAULT, the control's computeSize() method will be used to obtain that
301765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          dimension of the preferred size.
302765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
303765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
304765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory hint(Point hint) {
305765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.widthHint = hint.x;
306765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.heightHint = hint.y;
307765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return this;
308765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
309765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
310765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
311765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
312765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  // Minimum size
313765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
314765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
315765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory minH(int minimumWidth) {
316765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.minimumWidth = minimumWidth;
317765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return this;
318765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
319765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
320765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory minHC(int widthInChars) {
321765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return minH(m_pixelConverter.convertWidthInCharsToPixels(widthInChars));
322765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
323765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
324765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory minV(int minimumHeight) {
325765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.minimumHeight = minimumHeight;
326765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return this;
327765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
328765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
329765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory minVC(int heightInChars) {
330765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return minV(m_pixelConverter.convertHeightInCharsToPixels(heightInChars));
331765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
332765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
333765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
334765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
335765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  // Alignment
336765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
337765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
338765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
339765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the alignment of the control within its cell.
340765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
341765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param hAlign
342765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          horizontal alignment. One of SWT.BEGINNING, SWT.CENTER, SWT.END, or SWT.FILL.
343765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param vAlign
344765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          vertical alignment. One of SWT.BEGINNING, SWT.CENTER, SWT.END, or SWT.FILL.
345765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
346765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
347765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory align(int hAlign, int vAlign) {
348765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.horizontalAlignment = hAlign;
349765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.verticalAlignment = vAlign;
350765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return this;
351765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
352765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
353765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
354765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the horizontal and vertical alignment to GridData.FILL.
355765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
356765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory fill() {
357765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return align(GridData.FILL, GridData.FILL);
358765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
359765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
360765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
361765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the horizontal alignment of the control within its cell.
362765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
363765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param hAlign
364765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          horizontal alignment. One of SWT.BEGINNING, SWT.CENTER, SWT.END, or SWT.FILL.
365765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
366765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
367765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory alignH(int hAlign) {
368765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.horizontalAlignment = hAlign;
369765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return this;
370765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
371765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
372765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
373765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the horizontal alignment of the control to GridData.BEGINNING
374765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
375765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
376765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
377765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory alignHL() {
378765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return alignH(GridData.BEGINNING);
379765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
380765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
381765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
382765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the horizontal alignment of the control to GridData.CENTER
383765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
384765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
385765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
386765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory alignHC() {
387765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return alignH(GridData.CENTER);
388765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
389765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
390765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
391765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the horizontal alignment of the control to GridData.FILL
392765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
393765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
394765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
395765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory alignHF() {
396765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return alignH(GridData.FILL);
397765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
398765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
399765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
400765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the horizontal alignment of the control to GridData.FILL
401765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
402765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
403765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
404765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory fillH() {
405765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return alignHF();
406765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
407765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
408765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
409765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the horizontal alignment of the control to GridData.END
410765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
411765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
412765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
413765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory alignHR() {
414765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return alignH(GridData.END);
415765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
416765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
417765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
418765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the vertical alignment of the control within its cell.
419765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
420765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param vAlign
421765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          vertical alignment. One of SWT.BEGINNING, SWT.CENTER, SWT.END, or SWT.FILL.
422765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
423765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
424765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory alignV(int vAlign) {
425765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.verticalAlignment = vAlign;
426765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return this;
427765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
428765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
429765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
430765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the vertical alignment of the control to GridData.BEGINNING
431765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
432765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
433765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
434765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory alignVT() {
435765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return alignV(GridData.BEGINNING);
436765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
437765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
438765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
439765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the vertical alignment of the control to GridData.CENTER
440765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
441765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
442765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
443765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory alignVM() {
444765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return alignV(GridData.CENTER);
445765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
446765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
447765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
448765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the vertical alignment of the control to GridData.FILL
449765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
450765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
451765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
452765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory alignVF() {
453765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return alignV(GridData.FILL);
454765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
455765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
456765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
457765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the vertical alignment of the control to GridData.FILL
458765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
459765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
460765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
461765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory fillV() {
462765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return alignVF();
463765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
464765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
465765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
466765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the vertical alignment of the control to GridData.END
467765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
468765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
469765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
470765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory alignVB() {
471765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return alignV(GridData.END);
472765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
473765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
474765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
475765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
476765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  // Indent
477765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
478765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
479765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
480765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the indent of the control within the cell in pixels.
481765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
482765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory indentH(int hIndent) {
483765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.horizontalIndent = hIndent;
484765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return this;
485765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
486765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
487765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
488765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Sets the indent of the control within the cell in characters.
489765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
490765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory indentHC(int hIndent) {
491765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.horizontalIndent = m_pixelConverter.convertWidthInCharsToPixels(hIndent);
492765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return this;
493765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
494765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
495765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
496765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
497765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  // Grab
498765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
499765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
500765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
501765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Determines whether extra horizontal or vertical space should be allocated to this control's
502765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * column when the layout resizes. If any control in the column is set to grab horizontal then the
503765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * whole column will grab horizontal space. If any control in the row is set to grab vertical then
504765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * the whole row will grab vertical space.
505765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *
506765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param horizontal
507765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          true if the control's column should grow horizontally
508765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @param vertical
509765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   *          true if the control's row should grow vertically
510765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * @return this
511765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
512765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory grab(boolean horizontal, boolean vertical) {
513765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.grabExcessHorizontalSpace = horizontal;
514765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.grabExcessVerticalSpace = vertical;
515765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return this;
516765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
517765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
518765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory grabH() {
519765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.grabExcessHorizontalSpace = true;
520765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return this;
521765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
522765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
523765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory grabV() {
524765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.grabExcessVerticalSpace = true;
525765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return this;
526765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
527765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
528765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory grab() {
529765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return grab(true, true);
530765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
531765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
532765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
533765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
534765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  // Exclude
535765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
536765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
537765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public GridDataFactory exclude(boolean value) {
538765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_data.exclude = value;
539765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return this;
540765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
541765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye}
542