Я использую vaadin 14 для своего приложения. Мой класс MainView расширяет класс Applayout. Это позволяет мне использовать функцию addToNavBar (правда, некоторые компоненты), которая добавляет панель навигации в ваше приложение.
Теперь, в моем основном представлении, внутри панели навигации, у меня есть кнопки регистрации и входа в систему. Если щелкнуть эти кнопки, используя прослушиватель addonclick, я делегирую его другим представлениям, таким как «Вход» и «Регистрация». Во время этих изменений представления верхняя панель навигации остается на месте. Однако, если пользователь вошел в систему или зарегистрировался, я хочу удалить эти кнопки входа и регистрации на панели навигации и заменить их значком изображения профиля, расположенным внутри панели навигации. Однако из дочерних представлений (регистрация, вход) я не смог найти способ получить доступ к панели навигации с помощью vaadin 14. Соответственно, как я могу получить доступ и изменить содержимое панели навигации из дочерних представлений?
public class MainView extends AppLayout {
private static final long serialVersionUID = 1L;
private final Tabs menu;
private HorizontalLayout headerLayout;
public MainView() {
setPrimarySection(Section.NAVBAR);
headerLayout = createHeaderContent();
addToNavbar(true, headerLayout);
setDrawerOpened(false);
menu = createMenu();
addToDrawer(createDrawerContent(menu));
}
private HorizontalLayout createHeaderContent() {
headerLayout = new HorizontalLayout();
headerLayout.setId("header");
headerLayout.getThemeList().set("dark", true);
headerLayout.setWidthFull();
headerLayout.setSpacing(false);
headerLayout.setAlignItems(FlexComponent.Alignment.CENTER);
headerLayout.add(new DrawerToggle());
headerLayout.add(createWebsiteName());
headerLayout.add(createMiddleSpacingInHeader());
headerLayout.add(createLoginAndRegisterButtons());
return headerLayout;
}
private Component createLoginAndRegisterButtons() {
HorizontalLayout layout = new HorizontalLayout();
layout.setPadding(true);
layout.setSpacing(true);
layout.setAlignItems(Alignment.STRETCH);
Button register = createRegisterButton();
Button login = createLoginButton();
Image loggedInUserPicture = createLoggedInUserImage();
layout.add(register, login, loggedInUserPicture);
return layout;
}