@Override
	protected void layout(Composite composite, boolean flushCache){
		getControls(composite);
		// 
		Rectangle rect = composite.getClientArea();
		int left = rect.x, right = rect.width, top = rect.y, bottom = rect.height;
		// 
		if (north != null){
			if (!north.isVisible()){//
				// Reset bounds://
				north.setBounds(left, right, 0, 0);
			} else {//
				Point pt = getSize(north, flushCache);
				north.setBounds(left, top, rect.width, pt.y);
				top += pt.y;
			}
		}
		if (south != null){
			if (!south.isVisible()){//
				// Reset bounds://
				south.setBounds(left, right, 0, 0);
			} else {//
				Point pt = getSize(south, flushCache);
				south.setBounds(left, rect.height - pt.y, rect.width, pt.y);
				bottom -= pt.y;
			}//
		}
		if (east != null){
			if (!east.isVisible()){//
				// Reset bounds://
				east.setBounds(0, top, 0, (bottom - top));//
			} else {//
				Point pt = getSize(east, flushCache);
				east.setBounds(rect.width - pt.x, top, pt.x, (bottom - top));
				right -= pt.x;
			}//
		}
		if (west != null){
			if (!west.isVisible()){//
				// Reset bounds://
				west.setBounds(left, top, 0, (bottom - top));//
			} else {//
				Point pt = getSize(west, flushCache);
				west.setBounds(left, top, pt.x, (bottom - top));
				left += pt.x;
			}//
		}
		if (center != null){
			center.setBounds(left, top, (right - left), (bottom - top));
		}
	}