Objects have mothers and owners

All Elepub page objects have at least one mother and one owner. This is true for all types of objects placed on a page. The page itself is the outermost container and the only visualization object, which only has a mother object but no container. This is how Elepub pages are constructed and ordered.

Elepub page objects always inherit their values and attributes from one or several mother (repository) objects, and additionally they also have an owner object. The owner is the container object, which holds the particular page object. The outermost container is the page. Therefore, all objects on Elepub pages also have an owner (with the exception of the page itself).

Inheriting from mother objects

Most attributes of an Elepub page object are inherited from its mother object, which is stored in the repository. Of course, any of these inherited attributes can be overwritten locally by changing the inherited value to something different, which is then valid only for this one particular page object.

In real life, this is rather the exception. Typically only positioning and size of a page object will be different from its mother object.

Inheriting from the owner (container) object

In most cases inheritance simply works straight up the ancestor tree as shown on the previous page. But occasionally and for some attributes it would be favorable to let them inherit from their container object(s) instead. This is for cases where a page frame or a layout container should influence all of the objects contained inside this container (again possibly over several container levels) - instead of the mother objects. This can even be defined for every single attribute so that most attributes are still inherited from mothers while others are inherited from containers.

Changing all members of a container

Sometimes it is desired to change all objects inside a container (i. e. inside a page, or a layout container, or a table body). This can be achieved very easily by simply changing the value inside the particular container and delegating this to all member objects in that their inheritance precedence rule is changed from mother to owner. Member objects are all objects contained inside (held by) a container.

Since containers are mostly grouped in their own multi-level hierarchy, this inheritance can also span each level of this container hierarchy. Practically that means by simply changing a particular value of the page as the outermost container this can change the values of all objects contained inside the page.

The same can be applied to a layout container (typically one level below the page) with all of its components, or only to a table body, which also is a container, to influence all table cells (i.e. all the objects contained inside the table body).

Containers versus mothers

To choose the inheritance between containers and mothers one can even influence the inheritance precedence by defining your own precedence rules, which replace those inherent to Elepub. But this is the haute cuisine of cooking your own object inheritance tree - and should be left for later! First, you should learn how to cook your own Schnitzels!