private int computeOptimalNumColumnsForWidth(Composite parent, int width) { if (minNumColumns >= maxNumColumns || parent.getChildren().length <= minNumColumns) { return clampNumColumns(parent, minNumColumns); } Control[] children = parent.getChildren(); int minColWidth = 0; for (int i = 0; i < children.length; i++) { // To maximize the number of columns: int nextWidth = computeMinimumWidth(i); // To minimize the number of columns: // int nextWidth = computeControlSize(i, SWT.DEFAULT).x; minColWidth = Math.max(minColWidth, nextWidth); } return clampNumColumns(parent, (width - leftMargin - rightMargin + horizontalSpacing) / (minColWidth + horizontalSpacing)); }
int nColumns; if (wHint == SWT.DEFAULT) { nColumns = clampNumColumns(parent, maxNumColumns); nColumns = clampNumColumns(parent, 0);