RowHandle row = (RowHandle) getRow( i + 1 );
	public void insertColumn( int columnNumber, int parentColumnNumber )			throws SemanticException	{		transStar( TRANS_LABEL_INSERT_COLUMN );		assert columnNumber != 0;		int realColumnNumber = columnNumber > 0 ? parentColumnNumber				+ columnNumber : parentColumnNumber + columnNumber + 1;		int shiftPos = columnNumber > 0 ? columnNumber : columnNumber + 1;		ColumnHandle column = (ColumnHandle) getColumn( parentColumnNumber );		ColumnHandleAdapter adapt = HandleAdapterFactory.getInstance( )				.getColumnHandleAdapter( column );		ColumnHandle copy = (ColumnHandle) adapt.copy( );		int rowNumber = getRowCount( );		List copyChildren = new ArrayList( );		for ( int i = 0; i < rowNumber; i++ )		{			RowHandle row = (RowHandle) getRow( i + 1 );			TableHandleAdapter.RowUIInfomation rowInfo = getRowInfo( getRow( i + 1 ) );			List rowList = rowInfo.getAllChildren( );			CellHandle parentCell = (CellHandle) rowList.get( parentColumnNumber - 1 );			CellHandle cell = getCellHandleCopy( parentCell );			copyChildren.add( cell );		}		int copyRowSize = copyChildren.size( );		for ( int i = 0; i < copyRowSize; i++ )		{			RowHandle row = (RowHandle) getRow( i + 1 );			row.getSlot( TableRow.CONTENT_SLOT )					.add( (CellHandle) ( copyChildren.get( i ) ),							realColumnNumber - 1 );		}		SlotHandle parentHandle = column.getContainerSlotHandle( );		parentHandle.add( ( copy ) );		int pos = parentHandle.findPosn( column.getElement( ) );		parentHandle.shift( copy, pos + shiftPos );		List temp = new ArrayList( );		List hasAdjust = new ArrayList( );		for ( int i = 0; i < rowNumber; i++ )		{			TableHandleAdapter.RowUIInfomation rowInfo = getRowInfo( getRow( i + 1 ) );			List rowList = rowInfo.getAllChildren( );			Object fillCell = rowList.get( realColumnNumber - 1 );			CellHandleAdapter cellAdapt = HandleAdapterFactory.getInstance( )					.getCellHandleAdapter( fillCell );			if ( cellAdapt.getColumnNumber( ) != realColumnNumber )			{				if ( !hasAdjust.contains( fillCell ) )				{					cellAdapt.setColumnSpan( cellAdapt.getColumnSpan( ) + 1 );					hasAdjust.add( fillCell );				}				temp.add( new Integer( i ) );			}		}		for ( int i = 0; i < copyRowSize; i++ )		{			if ( temp.contains( new Integer( i ) ) )			{				( (CellHandle) copyChildren.get( i ) ).drop( );			}		}		transEnd( );	}