50 lines
1.8 KiB
Java
50 lines
1.8 KiB
Java
package com.example.views;
|
|
|
|
import com.example.js.CommonJS;
|
|
import com.vaadin.flow.component.applayout.AppLayout;
|
|
import com.vaadin.flow.component.applayout.DrawerToggle;
|
|
import com.vaadin.flow.component.button.Button;
|
|
import com.vaadin.flow.component.button.ButtonVariant;
|
|
import com.vaadin.flow.component.html.Span;
|
|
import com.vaadin.flow.component.icon.VaadinIcon;
|
|
import com.vaadin.flow.component.sidenav.SideNav;
|
|
import com.vaadin.flow.component.sidenav.SideNavItem;
|
|
import com.vaadin.flow.router.Layout;
|
|
|
|
@Layout
|
|
public class MainLayout extends AppLayout {
|
|
|
|
private final Button themeToggle = new Button(VaadinIcon.MOON.create());
|
|
|
|
public MainLayout() {
|
|
DrawerToggle toggle = new DrawerToggle();
|
|
|
|
Span title = new Span("Chart App");
|
|
title.addClassName("dialect-title");
|
|
|
|
Span spacer = new Span();
|
|
spacer.getStyle().set("flex-grow", "1");
|
|
|
|
themeToggle.addThemeVariants(ButtonVariant.TERTIARY, ButtonVariant.LUMO_ICON);
|
|
themeToggle.setAriaLabel("Farbschema wechseln");
|
|
themeToggle.addClickListener(e ->
|
|
getElement().executeJs(CommonJS.TOGGLE_THEME_JS).then(String.class, this::applyIconFor));
|
|
|
|
addToNavbar(toggle, title, spacer, themeToggle);
|
|
|
|
getElement().executeJs(CommonJS.INIT_THEME_JS).then(String.class, this::applyIconFor);
|
|
|
|
SideNav nav = new SideNav();
|
|
nav.addItem(new SideNavItem("Dashboard", DashboardView.class,
|
|
VaadinIcon.DASHBOARD.create()));
|
|
nav.addItem(new SideNavItem("Formular", FormView.class,
|
|
VaadinIcon.FORM.create()));
|
|
|
|
addToDrawer(nav);
|
|
}
|
|
|
|
private void applyIconFor(String theme) {
|
|
themeToggle.setIcon("dark".equals(theme) ? VaadinIcon.SUN_O.create() : VaadinIcon.MOON.create());
|
|
}
|
|
}
|