height = (int)(total * maxValue / ratios[maxIndex]);
height += (int)(total * maxValue / ratios[maxIndex]) + (cArray.length - 1) * sashwidth;
protected Point computeSize(Composite composite, int wHint, int hHint, boolean flushCache) {	SashForm sashForm = (SashForm)composite;	Control[] cArray = sashForm.getControls(true);	int width = 0;	int height = 0;	if (cArray.length == 0) {				if (wHint != SWT.DEFAULT) width = wHint;		if (hHint != SWT.DEFAULT) height = hHint;		return new Point(width, height);	}		int sashwidth = sashForm.sashes.length > 0 ? sashForm.SASH_WIDTH + sashForm.sashes [0].getBorderWidth() * 2 : sashForm.SASH_WIDTH;	boolean vertical = (sashForm.orientation == SWT.VERTICAL);	if (vertical) {		height += (cArray.length - 1) * sashwidth;	} else {		width += (cArray.length - 1) * sashwidth;	}	// get the ratios	long[] ratios = new long[cArray.length];	long total = 0;	for (int i = 0; i < cArray.length; i++) {		Long ratio = (Long)cArray[i].getData(SashForm.LAYOUT_RATIO);		if (ratio != null) {			ratios[i] = ratio.longValue();		} else {			ratios[i] = ((200 << 16) + 999) / 1000;		}		total += ratios[i];	}	int maxIndex = 0;	int maxValue = 0;	for (int i = 0; i < cArray.length; i++) {		if (vertical) {			Point size = cArray[i].computeSize(wHint, SWT.DEFAULT, flushCache);			if (size.y > maxValue) {				maxIndex = i;				maxValue = size.y;			}			width = Math.max(width, size.x);		} else {			Point size = cArray[i].computeSize(SWT.DEFAULT, hHint, flushCache);			if (size.x > maxValue) {				maxIndex = i;				maxValue = size.x;			}			height = Math.max(height, size.y);		}	}	if (vertical) {		height = (int)(total * maxValue / ratios[maxIndex]);	} else {		width = (int)(total * maxValue / ratios[maxIndex]);	}	if (wHint != SWT.DEFAULT) width = wHint;	if (hHint != SWT.DEFAULT) height = hHint;	return new Point(width, height);}