void setItemOrder(int[] itemOrder) {
		if (itemOrder == null)
			error(SWT.ERROR_NULL_ARGUMENT);
		int count = originalItems.length;
		if (itemOrder.length != count)
			error(SWT.ERROR_INVALID_ARGUMENT);

		/* Ensure that itemOrder does not contain any duplicates. */
		boolean[] set = new boolean[count];
		for (int i = 0; i < set.length; i++)
			set[i] = false;
		for (int i = 0; i < itemOrder.length; i++) {
			if (itemOrder[i] < 0 || itemOrder[i] >= count)
				error(SWT.ERROR_INVALID_ARGUMENT);
			if (set[itemOrder[i]])
				error(SWT.ERROR_INVALID_ARGUMENT);
			set[itemOrder[i]] = true;
		}

		CoolItem[] row = new CoolItem[count];
		for (int i = 0; i < count; i++) {
			row[i] = originalItems[itemOrder[i]];
		}
		items = new CoolItem[1][count];
		items[0] = row;
	}