The position and size of a submanager depend
on the position and size of the objects that are contained in the
submanager. As a consequence, all objects that are contained in the
submanager are always displayed, and the size and position of the
submanager may change when a graphic object contained in this
manager changes position or size.
Note that in the simple example (see Example: Adding a nested manager), the
position and size of the submanager has not been specified.
As for any graphic object, you can move and resize a submanager
using the moveObject or reshapeObject methods. In the example you
could do something like:
toplevel.moveObject(subManager, 100,100, true)
When a nested manager is resized or moved, the objects contained in
the manager do not change position in the submanager coordinate
system. The submanager will move because an affine
transformation (an IlvTransformer) will be specified in the
submanager to define a new relative coordinate system for the
submanager. In the line for moving the
subManager
to
(100,100)
, the transformation is a simple translation of
(100,100)
.
To obtain the affine transform that defines the coordinate system
of the submanager, you can use the method getTransformer.
If the submanager has not been moved or
reshaped, this returns the identity transformation.
To know what transformation is used to draw a submanager in a
specified view, you can use the following method of the
IlvManager
class: getDrawingTransformer.
This method returns the affine
transformation used to draw the objects in a manager. If the
specified view is a view of the manager, then it simply returns the
affine transform of the view; otherwise, the method will compose
the transformation of all the parents of the manager and also the
transformation of the view to give the result.