Every layout must be an instance of
LayoutClass, which defines
the basic layout operations along with a sensible default for each.
All of the methods have default implementations, so there is no
minimal complete definition. They do, however, have a dependency
structure by default; this is something to be aware of should you
choose to implement one of these methods. Here is how a minimal
complete definition would look like if we did not provide any default
implementations:
Note that any code which
uses LayoutClass methods should
only ever call
runLayout,
handleMessage, and
description! In other words, the only calls to
doLayout,
pureMessage, and other such methods should be from the default
implementations of
runLayout,
handleMessage, and so on.
This ensures that the proper methods will be used, regardless of the
particular methods that any
LayoutClass instance chooses to
define.