Menu Component
This class combines the configuration and the core rendering of a menu.
A menu consists of different types of children that are aligned vertically. By default the following types can be added to the menu:
entries (see MenuEntry)
headers (see MenuHeader)
dividers (see MenuDivider)
It is also possible to add any other fritz2 component via the custom context. All menu items are created directly within the MenuComponent's build context.
The menu-entry-DSL can be extended via standard Kotlin extension methods. Custom entries must implement the MenuChild interface and are added to the Menu via the MenuComponent.addChild method which is accessible from within the extension method.
class MyMenuEntry : MenuChild {
override fun render(context: RenderContext) {
context.apply {
//...
}
}
}The following example adds an instance of MyMenuEntry to the Menu. Notice that MenuComponent.addChild is invoked in the end; the entry wouldn't be added otherwise!
fun MenuComponent.myEntry(build: MyMenuEntry.() -> Unit) = MyMenuEntry()
.apply(build)
.run(::addChild)