Class MainLayout

java.lang.Object
com.vaadin.flow.component.Component
com.vaadin.flow.component.applayout.AppLayout
org.vaadin.firitin.appframework.VAppLayout
org.vaadin.firitin.appframework.MainLayout
All Implemented Interfaces:
com.vaadin.flow.component.AttachNotifier, com.vaadin.flow.component.DetachNotifier, com.vaadin.flow.component.HasElement, com.vaadin.flow.component.HasStyle, com.vaadin.flow.router.AfterNavigationObserver, com.vaadin.flow.router.internal.AfterNavigationHandler, com.vaadin.flow.router.RouterLayout, Serializable
Direct Known Subclasses:
MobileMainLayout

public abstract class MainLayout extends VAppLayout
The main view is a top-level placeholder for other views. This version is based on a one produced by start.vaadin.com service, but add a bit structure to it and populates main views automatically to it.

Suites as such for small apps that has no special needs for the main layout. Menu items can be configured (override caption, order, icon) using MenuItem annotation

Check usage example from the text package org.vaadin.firitin.appframework

See Also:
  • Nested Class Summary

    Nested classes/interfaces inherited from class com.vaadin.flow.component.applayout.AppLayout

    com.vaadin.flow.component.applayout.AppLayout.AppLayoutI18n, com.vaadin.flow.component.applayout.AppLayout.Section
  • Field Summary

    Fields inherited from class VAppLayout

    navbarHelpers
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    afterNavigation(com.vaadin.flow.router.AfterNavigationEvent event)
     
    void
    This method can be called to re-build the menu, if e.g. views has been added, removed or otherwise changed.
    protected boolean
    checkAccess(NavigationItem navigationItem)
    Application that has e.g. role based access control can limit the appearance of the navigation item in the menu by returning false here.
    protected List<NavigationItem>
    The child navigation items of the given (parent/group) item, in menu order.
    static MainLayout
    Assuming an attached component is within o view utilizing MainLayout, this method returns the current MainLayout.
     
    protected void
     
    protected void
    onAttach(com.vaadin.flow.component.AttachEvent attachEvent)
     
    protected void
    Called at the end of buildMenu() with the visible, access-filtered and ordered top-level navigation items (the same ones just rendered into the drawer SideNav).
    protected void
    sortMenuItems(List<NavigationItem> navigationItems)
     

    Methods inherited from class com.vaadin.flow.component.applayout.AppLayout

    addToDrawer, addToNavbar, addToNavbar, bindDrawerOpened, getContent, getI18n, getPrimarySection, isDrawerOpened, isOverlay, remove, setDrawerOpened, setI18n, setPrimarySection, showRouterLayoutContent

    Methods inherited from class com.vaadin.flow.component.Component

    addListener, bindVisible, findAncestor, fireEvent, from, get, getChildren, getElement, getEventBus, getId, getListeners, getLocale, getParent, getTestId, getTranslation, getTranslation, getTranslation, getTranslation, getTranslation, getTranslation, getUI, hasListener, isAttached, isTemplateMapped, isVisible, onDetach, onEnabledStateChanged, removeFromParent, scrollIntoView, scrollIntoView, set, setElement, setId, setTestId, setVisible

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface com.vaadin.flow.component.AttachNotifier

    addAttachListener

    Methods inherited from interface com.vaadin.flow.component.DetachNotifier

    addDetachListener

    Methods inherited from interface com.vaadin.flow.component.HasElement

    getElement

    Methods inherited from interface com.vaadin.flow.component.HasStyle

    addClassName, addClassNames, bindClassName, bindClassNames, getClassName, getClassNames, getStyle, hasClassName, removeClassName, removeClassNames, setClassName, setClassName

    Methods inherited from interface com.vaadin.flow.router.RouterLayout

    removeRouterLayoutContent
  • Constructor Details

    • MainLayout

      public MainLayout()
  • Method Details

    • onAttach

      protected void onAttach(com.vaadin.flow.component.AttachEvent attachEvent)
      Overrides:
      onAttach in class com.vaadin.flow.component.Component
    • init

      protected void init()
    • sortMenuItems

      protected void sortMenuItems(List<NavigationItem> navigationItems)
    • getNavigationItems

      public List<NavigationItem> getNavigationItems()
      Returns:
      A List of BasicNavigationItem objects to be shown in the menu. After modifying these manually, call buildMenu() to update the screen.
    • buildMenu

      public void buildMenu()
      This method can be called to re-build the menu, if e.g. views has been added, removed or otherwise changed.

      If you have dynamically added/removed views from another thread, wrap the behavior in UI.access method.

    • onMenuBuilt

      protected void onMenuBuilt(List<NavigationItem> topLevelItems)
      Called at the end of buildMenu() with the visible, access-filtered and ordered top-level navigation items (the same ones just rendered into the drawer SideNav). The default implementation does nothing.

      Subclasses can use this to build an additional navigation presentation from the same model, e.g. a mobile bottom navigation bar (see MobileMainLayout). The items carry their navigation target, icon (MenuItem/Menu) and translated label, so the alternative presentation stays in sync with access control, ordering and i18n for free. It is called again whenever the menu is rebuilt (routes added or removed), so rebuild the alternative presentation from scratch here.

      Parameters:
      topLevelItems - the visible top-level items, in menu order
    • getChildItems

      protected List<NavigationItem> getChildItems(NavigationItem parent)
      The child navigation items of the given (parent/group) item, in menu order. Empty for a leaf item. Useful for an alternative presentation that wants to render two-level hierarchies itself (e.g. MobileMainLayout opening a group's children in a popover instead of a drawer sub-menu).
      Parameters:
      parent - the parent item
      Returns:
      its direct children, sorted as in the menu
    • checkAccess

      protected boolean checkAccess(NavigationItem navigationItem)
      Application that has e.g. role based access control can limit the appearance of the navigation item in the menu by returning false here.
      Parameters:
      navigationItem - the navigation item
      Returns:
      true if item should be visible or not
    • afterNavigation

      public void afterNavigation(com.vaadin.flow.router.AfterNavigationEvent event)
      Specified by:
      afterNavigation in interface com.vaadin.flow.router.internal.AfterNavigationHandler
      Overrides:
      afterNavigation in class VAppLayout
    • getCurrent

      public static MainLayout getCurrent()
      Assuming an attached component is within o view utilizing MainLayout, this method returns the current MainLayout. In a bigger projects it is most often better to inject the parent layout if needed and use a more specific type.
      Returns:
      the current main layout.