This widget is a container for another widgets. It has ability to be dragged and placed at any place on a form by application user. Below you can see how the widget looks by default.
On the following image you can see how the widget looks with opened list of child widgets which are not fit into CoolBar client area and opened list for controlling child widgets visibility.
When CoolBar is on a form or on another widget (which is not a CoolBar) user can change widget's position and alignment by dragging and dropping it at any place he wants. To disable changing widget's position the Locked property should be set to true. To prevent only automatic alignment when widget is dragged to borders of a form or client area of parent widget the AutoAlign property should be set to false.
When widget is dragged to a border of a form or client area of a parent widget it sticks to it. The stick distance is controlled by the StickDistance property.
CoolBar have several orientation options described by the Orientation property. This property indicates how child widgets are aligned (from left to right, from top to bottom, and so on) and position of mover (the part user drag widget for) and extra button.
When CoolBar is placed on another CoolBar, it can be moved by a user to change its position on parent CoolBar. When there are several CoolBars on parent one, nearest CoolBar to the one being moved can change size. If CoolBar size should not be changed during such a case its property Resizable should be set to false.
In order the user be able to control CoolBar child widgets visibility an instance of
ICoolBar::IVisibilityManager should be assigned to the CoolBar. Otherwise, all child widgets are visible and no Add or Remove Buttons button appears.