if ( adapter.hasParent( ) ) return false;
	protected boolean canShift( RowOperationParameters parameters )	{		int destIndex = parameters.getDestIndex( );		int sourceIndex = parameters.getSourceIndex( );		SlotHandle slotHandle = getSlotHandle( parameters );		if ( slotHandle == null )			return false;		if ( sourceIndex < 0 || sourceIndex >= slotHandle.getCount( ) )			return false;		if ( destIndex < 0 || destIndex > slotHandle.getCount( ) )			return false;		if ( sourceIndex == destIndex )			return false;		RowHandle sourceHandle = (RowHandle) slotHandle.get( sourceIndex );		if ( destIndex > 0 )			--destIndex;		// check source row and the upper of target row is rectangle and hasn't		// row span.		RowHandle destHandle = (RowHandle) slotHandle.get( destIndex );		if ( isRectangleArea( sourceHandle ) && isRectangleArea( destHandle )				&& !containsRowSpan( sourceHandle )				&& !containsRowSpan( destHandle ) )		{			return true;		}		return false;	}