TableColumn [] moved = new TableColumn [columnCount];
public void setColumnOrder (int [] order) {	checkWidget ();	if (order == null) error (SWT.ERROR_NULL_ARGUMENT);	if (columnCount == 0) {		if (order.length != 0) error (SWT.ERROR_INVALID_ARGUMENT);		return;	}	if (order.length != columnCount) error (SWT.ERROR_INVALID_ARGUMENT);	int [] oldOrder = getColumnOrder ();	boolean reorder = false;	boolean [] seen = new boolean [columnCount];	for (int i=0; i<order.length; i++) {		int index = order [i];		if (index < 0 || index >= columnCount) error (SWT.ERROR_INVALID_ARGUMENT);		if (seen [index]) error (SWT.ERROR_INVALID_ARGUMENT);		seen [index] = true;		if (order [i] != oldOrder [i]) reorder = true;	}	if (reorder) {		TableColumn [] moved = new TableColumn [columnCount];		for (int i=0; i<order.length; i++) {			int index = order [i];			TableColumn column = columns [index];			int position = (style & SWT.CHECK) != 0 ? i + 1 : i;			OS.SetDataBrowserTableViewColumnPosition(handle, column.id, position);			if (position != column.lastPosition) {				column.lastPosition = position;				moved [i] = column;			}		}		for (int i=0; i<columnCount; i++) {			TableColumn column = moved [i];			if (column != null && !column.isDisposed ()) {				column.sendEvent (SWT.Move);			}		}	}}