area<%>
______________________|_______________
| | |
subarea<%> window<%> area-container<%>
|____ _______|__________ |
| | | |
subwindow<%> area-container-window<%>
________|________ |
| | |
control<%> canvas<%> top-level-window<%>
area<%>
_____________________|_______________
| | |
subarea<%> window<%> area-container<%>
<<<____|____ _____|__________ __|___ ___________________<<<
| | | | | |
subwindow<%> | | | |
<<<______________|___________ | | | | _<<<
| | | | pane% |
control<%> | | | |- horizontal-pane% |
|- message% | | | |- vertical-pane% |
|- button% | | | |
|- check-box% | area-container-window<%> |
|- slider% | | |
|- gauge% | | __________________|
|- text-field% | | |
|- combo-field% | |-------- panel%
|- radio-box% | | |- horizontal-panel%
|- list-control<%> | | |- vertical-panel%
|- choice% | | |- tab-panel%
|- list-box% | | |- group-box-panel%
| |
| |- top-level-window<%>
| |- frame%
canvas<%> |- dialog%
|- canvas%
|- editor-canvas%
menu-item<%> menu-item-container<%>
| |
|- separator-menu-item% _____|___
|- labelled-menu-item<%> | |- menu-bar%
_________|_________ | |- popup-menu%
| | |
| menu%
|
|- selectable-menu-item<%>
|- menu-item%
|- checkable-menu-item%
Containers support vertical and horizontal stacking, which can be nested. With this support, most anything is doable.
| | an element | | | | | | another element | | | | | | | | | | | etc | | | | | |
These are like sub-containers or children. They each have these properties:
A container arranges its children based on the four properties of all of its containees. When you create the containee, you specify its parent container. A window container can be hidden/deleted within its parent, and it's parent can be changed by reparenting!
https://docs.racket-lang.org/gui-easy/index.html