TableWrapLayout is a grid-based layout very similar to SWT's versatile GridLayout. It differs from GridLayout in that it uses a layout algorithm that works more like HTML tables. It tries to respect the provided client area width and grows vertically to compensate.
There are many similarities between GridLayout and TableWrapLayout. Both organize children in grids. Both have layout data that instructs the layout how to treat each control. Both can accept hints on which control should grab excess space, etc.
However, they fundamentally differ in the approach to the
layout. TableWrapLayout
starts with columns. It computes minimal,
preferred and maximum widths of each column and uses this information to assign
excess space. It also tries to be fair when dividing space across columns so
that there is no excess wrapping of some controls.
It is possible to mix GridLayout
and
TableWrapLayout
but the branch where GridLayout
is used is
the one where wrapping stops. This is quite acceptable if you don't want it to
wrap (if the composite contains controls that cannot wrap anyway, like text,
buttons, trees etc.). However, you should have an unbroken path of TableWrapLayouts
from the form body to each text control that needs to wrap.