'Constructor
@param fields: the fields to display as list of lists of
fieldnames, Field instances or callables
@param tabs: the tabs
Fields are specified in order rows->cols, i.e. if written
like:
["fieldA", "fieldF", "fieldX"],
["fieldB", None, "fieldY"]
then that\'s exactly the screen order. Row or column spans are
not supported - empty fields will be rendered as empty fields.
If you need to construct more complex rheaders, you should
implement a custom method.
Fields can be specified by field names, Field instances or
as callables. Where a field specifier is a callable, it will
be invoked with the record as parameter and is respected to
return the representation value.
Where a field specifier is a tuple of two items, the first
item is taken for the label (overriding the field label, if
any), like in:
[(T("Name"), s3_fullname)],
Where the second item is a callable, it maybe necessary to
specify a label.
If you don\'t want any fields, specify this explicitly as:
rheader = S3ResourceHeader(fields=[])
Where you don\'t specify any fields and the table contains a
"name" field, the rheader defaults to: [["name"]].'

def __init__(self, fields=None, tabs=None):

    self.fields = fields
    self.tabs = tabs
