How Components Gets Initialized
The initialization of a component always follows the same scheme:
A component factory method will be called with an start definition object:
The component factory create a generic or specific instance of the component class with the environment object:
The prepare method receives this object and after some basic checks, the super prepare method will be called with the same environment object. The super prepare method:
- Saves the environment object.
- Initialize the event methods.
- Merge the settings and options from
startobject with default values. - Binds callbacks defined in
onto events. - Prepare the
visibilityevent chain.
The super prepare method use the following properties:
Then the prepare method of the component prepares container, element and scroll elements. From
here it is important to use "this.id" instead of "this.env.start.id" and "this.init.type" instead
"env.start.type". The method complements the environment object with the final element pointers:
Block or Splash will be started. After this point individual steps will be carried out.
After the prepare method the user defined init method will be called and then the finalize method.
If needed inside the finalize method sometimes await start or await start and await boot will
be called. This call should be done as last one. if only start defined then this is the last call,
if start and boot then is boot the last call. After that only unblock the component (or close
splash).
The System class do not have a component factory method. Step 1 and 2 will be processed inside of
the prepare method.
The steps in a component factory in detail:
A) Check if id is used already. Widgets and Stages will throw an error. Application will return
the running instance with this id.
B) The start definition object will be cloned to the init definition object. This is supplemented with additional or default values:
- Set a random id if not set.
- Set a default type (in Widget and Stage)
C) Prepare values for the environment object:
- Check if
containeris valid. Thecontainerwill be specified here or in the override methods of the facytory methods. System do not execute this step, because System do not have a container.
D) Create generic or specific instance of the component class with the environment object.
E) Wait for initialization
F) Add instance to the internal registry.