Class GridLayoutFactory
GridLayoutFactory can also generate grid data for all the controls in a layout. This is done with the generateLayout method. To use this feature:
- Create the composite
- Create all the controls in the composite
- Call generateLayout
The order here is important. generateLayout must be called after all the child controls have been created. generateLayout will not change any layout data that has already been attached to a child control and it will not recurse into nested composites.
- Since:
- 3.2
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Creates a new GridLayout and attaches it to the given composite.copy()
Creates a copy of the receiver.static GridLayout
Copies the given GridLayout instancecreate()
Creates a new GridLayout, and initializes it with values from the factory.static GridLayoutFactory
Creates a factory that creates copies of the given layout.equalWidth
(boolean equal) Sets whether the columns should be forced to be equal widthextendedMargins
(int left, int right, int top, int bottom) Sets the margins for layouts created with this factory.extendedMargins
(Rectangle differenceRect) Sets the margins for layouts created with this factory.static GridLayoutFactory
Creates a GridLayoutFactory that creates GridLayouts with no margins and default dialog spacing.void
Applies this layout to the given composite, and attaches default GridData to all immediate children that don't have one.margins
(int width, int height) Sets the margins for layouts created with this factory.Sets the margins for layouts created with this factory.numColumns
(int numColumns) Sets the number of columns in the layoutspacing
(int hSpacing, int vSpacing) Sets the spacing for layouts created with this factory.Sets the spacing for layouts created with this factory.static GridLayoutFactory
Creates a GridLayoutFactory that creates GridLayouts with the default SWT values.toString()
-
Method Details
-
createFrom
Creates a factory that creates copies of the given layout.- Parameters:
l
- layout to copy- Returns:
- a new GridLayoutFactory instance that creates copies of the given layout
-
copy
Creates a copy of the receiver.- Returns:
- a copy of the receiver
-
swtDefaults
Creates a GridLayoutFactory that creates GridLayouts with the default SWT values.Initial values are:
- numColumns(1)
- margins(5,5)
- extendedMargins(0,0,0,0)
- spacing(5,5)
- equalWidth(false)
- Returns:
- a GridLayoutFactory that creates GridLayouts as though created with their default constructor
- See Also:
-
fillDefaults
Creates a GridLayoutFactory that creates GridLayouts with no margins and default dialog spacing.Initial values are:
- numColumns(1)
- margins(0,0)
- extendedMargins(0,0,0,0)
- spacing(LayoutConstants.getSpacing())
- equalWidth(false)
- Returns:
- a GridLayoutFactory that creates GridLayouts as though created with their default constructor
- See Also:
-
equalWidth
Sets whether the columns should be forced to be equal width- Parameters:
equal
- true iff the columns should be forced to be equal width- Returns:
- this
-
spacing
Sets the spacing for layouts created with this factory. The spacing is the distance between cells within the layout.- Parameters:
hSpacing
- horizontal spacing (pixels)vSpacing
- vertical spacing (pixels)- Returns:
- this
- See Also:
-
spacing
Sets the spacing for layouts created with this factory. The spacing is the distance between cells within the layout.- Parameters:
spacing
- space between controls in the layout (pixels)- Returns:
- this
- See Also:
-
margins
Sets the margins for layouts created with this factory. The margins are the distance between the outer cells and the edge of the layout.- Parameters:
margins
- margin size (pixels)- Returns:
- this
- See Also:
-
margins
Sets the margins for layouts created with this factory. The margins specify the number of pixels of horizontal and vertical margin that will be placed along the left/right and top/bottom edges of the layout. Note that these margins will be added to the ones specified byextendedMargins(int, int, int, int)
.- Parameters:
width
- margin width (pixels)height
- margin height (pixels)- Returns:
- this
- See Also:
-
extendedMargins
Sets the margins for layouts created with this factory. The margins specify the number of pixels of horizontal and vertical margin that will be placed along the left, right, top, and bottom edges of the layout. Note that these margins will be added to the ones specified bymargins(int, int)
.- Parameters:
left
- left margin size (pixels)right
- right margin size (pixels)top
- top margin size (pixels)bottom
- bottom margin size (pixels)- Returns:
- this
- Since:
- 3.3
- See Also:
-
extendedMargins
Sets the margins for layouts created with this factory. The margins specify the number of pixels of horizontal and vertical margin that will be placed along the left, right, top, and bottom edges of the layout. Note that these margins will be added to the ones specified bymargins(int, int)
.// Construct a GridLayout whose left, right, top, and bottom // margin sizes are 10, 5, 0, and 15 respectively Rectangle margins = Geometry.createDiffRectangle(10,5,0,15); GridLayoutFactory.fillDefaults().extendedMargins(margins).applyTo(composite1);
- Parameters:
differenceRect
- rectangle which, when added to the client area of the layout, returns the outer area of the layout. The x and y values of the rectangle correspond to the position of the bounds of the layout with respect to the client area. They should be negative. The width and height correspond to the relative size of the bounds of the layout with respect to the client area, and should be positive.- Returns:
- this
- Since:
- 3.3
- See Also:
-
numColumns
Sets the number of columns in the layout- Parameters:
numColumns
- number of columns in the layout- Returns:
- this
-
create
Creates a new GridLayout, and initializes it with values from the factory.- Returns:
- a new initialized GridLayout.
- See Also:
-
applyTo
Creates a new GridLayout and attaches it to the given composite. Does not create the GridData of any of the controls in the composite.- Parameters:
c
- composite whose layout will be set- See Also:
-
copyLayout
Copies the given GridLayout instance- Parameters:
l
- layout to copy- Returns:
- a new GridLayout
-
generateLayout
Applies this layout to the given composite, and attaches default GridData to all immediate children that don't have one. The layout is generated using heuristics based on the widget types. In most cases, it will create exactly the same layout that would have been hardcoded by the programmer. In any situation where it does not produce the desired layout, the GridData for any child can be overridden by attaching the layout data before calling this method. In these cases, the special-case layout data can be hardcoded and the algorithm can supply defaults to the rest.This must be called AFTER all of the child controls have been created and their layouts attached. This method will attach a layout to the given composite. If any new children are created after calling this method, their GridData must be created manually. The algorithm does not recurse into child composites. To generate all the layouts in a widget hierarchy, the method must be called bottom-up for each Composite.
All controls are made to span a single cell. The algorithm tries to classify controls into one of the following categories:
- Pushbuttons: Set to a constant size large enough to fit their text and no smaller than the default button size.
- Wrapping with text (labels, read-only text boxes, etc.): override the preferred horizontal size with the default wrapping point, fill horizontally, grab horizontal space, keep the preferred vertical size
- Wrapping without text (toolbars, coolbars, etc.): fill align, don't grab, use the preferred size
- Horizontally scrolling controls (anything with horizontal scrollbars or where the user edits text and can cursor through it from left-to-right): override the preferred horizontal size with a constant, grab horizontal, fill horizontal.
- Vertically scrolling controls (anything with vertical scrollbars or where the user edits text and can cursor through it up and down): override the preferred vertical size with a constant, grab vertical, fill vertical
- Nested layouts: fill align both directions, grab along any dimension if the layout would be able to expand along that dimension.
- Non-wrapping non-scrollable read-only text: fill horizontally, center vertically, default size, don't grab
- Non-wrapping non-scrollable non-text: fill both, default size, don't grab
- Parameters:
c
- composite whose layout will be generated
-
toString
-