public void insertColumn(int i, double size)
	{
		// Make sure position is valid
		if ((i < 0) || (i > columnSpec.length))
			throw new IllegalArgumentException("Parameter i is invalid.  i = " + i
					+ ".  Valid range is [0, " + columnSpec.length + "].");

		// Make sure column size is valid
		if ((size < 0.0) && (size != FILL) && (size != PREFERRED) && (size != MINIMUM))
		{
			size = 0.0;
		}

		// Copy columns
		double column[] = new double[columnSpec.length + 1];
		System.arraycopy(columnSpec, 0, column, 0, i);
		System.arraycopy(columnSpec, i, column, i + 1, columnSpec.length - i);

		// Insert column
		column[i] = size;
		columnSpec = column;

		// Move all components that are to the right of new row
		ListIterator<Entry> iterator = list.listIterator(0);

		while (iterator.hasNext())
		{
			// Get next entry
			Entry entry = (Entry) iterator.next();

			// Is the first column to the right of the new column
			if (entry.col1 >= i)
				// Move first column
				entry.col1++;

			// Is the second column to the right of the new column
			if (entry.col2 >= i)
				// Move second column
				entry.col2++;
		}

		// Indicate that the cell sizes are not known
		dirty = true;
	}