diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/navigation/ClubhelperNavigation.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/navigation/ClubhelperNavigation.java index bde0c40..b8718a0 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/navigation/ClubhelperNavigation.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/navigation/ClubhelperNavigation.java @@ -82,6 +82,10 @@ public class ClubhelperNavigation { return this; } + public void navigateTo(ClubhelperViews view) { + navigateTo(view.name()); + } + @Override public void navigateTo(String navigationState) { ClubhelperViews byState = ClubhelperViews.byState(navigationState); diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/navigation/HeadView.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/navigation/HeadView.java index e776cea..ab4e330 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/navigation/HeadView.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/navigation/HeadView.java @@ -58,7 +58,7 @@ public class HeadView extends HorizontalLayout { private int monthItemId; - private Label personLabel; + private Button personLabel; private final ClubNavigator navigator; @@ -76,13 +76,15 @@ public class HeadView extends HorizontalLayout { monthName.setWidth(null); Button popupButton = new Button(VaadinIcons.MENU); - popupButton.setId("calendar.menu"); + popupButton.setId("head.menu"); popupButton.addClickListener(ev -> openPopupMenu(ev)); popupButton.setWidth(null); - personLabel = new Label(); - personLabel.setStyleName("title_caption"); - personLabel.addStyleName("bold-caption"); + personLabel = new Button(VaadinIcons.USER); + personLabel.setId("head.user"); +// personLabel.setStyleName("title_caption"); +// personLabel.addStyleName("bold-caption"); + personLabel.addClickListener(this::openPopupMenu); this.addComponent(popupButton); this.addComponent(monthName); @@ -118,21 +120,36 @@ public class HeadView extends HorizontalLayout { Button button = ev.getButton(); ContextMenu contextMenu = new ContextMenu(button, true); - monthItemId = contextMenu.addItem("Export Monat", ev1 -> calendarExport(ev1)).getId(); - contextMenu.addItem("Export Jahr", ev1 -> calendarExport(ev1)); - if (securityVerifier.getLoggedinPerson() != null) { - if (securityVerifier.isPermitted(SecurityGroups.ADMIN, SecurityGroups.UEBUNGSLEITER)) { + + switch (button.getId()) { + case "head.menu": + monthItemId = contextMenu.addItem("Export Monat", ev1 -> calendarExport(ev1)).getId(); + contextMenu.addItem("Export Jahr", ev1 -> calendarExport(ev1)); + if (securityVerifier.isLoggedin() + && securityVerifier.isPermitted(SecurityGroups.ADMIN, SecurityGroups.UEBUNGSLEITER)) { contextMenu.addItem("Personen verwalten", ev1 -> navigator.navigateTo(ClubhelperViews.PersonEditView.name())); } - contextMenu.addItem("Abmelden", ev1 -> { - securityVerifier.setLoggedinPerson(null); - navigator.navigateTo(ClubhelperViews.MainView.name()); - }); - } else { - contextMenu.addItem("Anmelden", ev1 -> navigator.navigateTo(ClubhelperViews.LoginUI.name())); + contextMenu.open(50, 50); + break; + case "head.user": + if (securityVerifier.getLoggedinPerson() != null) { + + contextMenu.addItem("Abmelden", ev1 -> { + securityVerifier.setLoggedinPerson(null); + navigator.navigateTo(ClubhelperViews.MainView.name()); + }); + } else { + contextMenu.addItem("Anmelden", ev1 -> navigator.navigateTo(ClubhelperViews.LoginUI.name())); + } + int width = getUI().getPage().getBrowserWindowWidth(); + + contextMenu.open(width - 150, 50); + break; + default: + break; } - contextMenu.open(50, 50); + } private void calendarExport(MenuItem ev1) { diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/navigation/MainView.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/navigation/MainView.java index 4dc9942..a5a0e39 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/navigation/MainView.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/navigation/MainView.java @@ -53,7 +53,7 @@ public abstract class MainView extends VerticalLayout implements View { if (securityVerifier.isLoggedin()) { LOGGER.info("{} already initialized - opening Person View.", getClass().getName()); ClubEvent current = eventBusiness.getCurrent(); - openPersonViewForEvent(current); + openDetailForEvent(current); } else { LOGGER.info("{} already initialized - but not loggedin.", getClass().getName()); detailClosed(); @@ -88,7 +88,7 @@ public abstract class MainView extends VerticalLayout implements View { eventView.setVisible(false); } - public void openPersonViewForEvent(ClubEvent ev) { + public void openDetailForEvent(ClubEvent ev) { LOGGER.debug("Opening detail view for {}", ev); eventBusiness.setSelected(null); diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/navigation/MainViewDesktop.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/navigation/MainViewDesktop.java index 44d4397..7e15109 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/navigation/MainViewDesktop.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/navigation/MainViewDesktop.java @@ -115,7 +115,7 @@ public class MainViewDesktop extends MainView { ClubEvent ev = (ClubEvent) event.getCalendarItem(); if (securityVerifier.isLoggedin()) { - openPersonViewForEvent(ev); + openDetailForEvent(ev); } else { eventBusiness.setSelected(ev); navigator.navigateTo(ClubhelperViews.LoginUI.name() + '/' + ev.getId()); @@ -123,8 +123,8 @@ public class MainViewDesktop extends MainView { } @Override - public void openPersonViewForEvent(ClubEvent ev) { - super.openPersonViewForEvent(ev); + public void openDetailForEvent(ClubEvent ev) { + super.openDetailForEvent(ev); mainLayout.addComponent(eastLayout); mainLayout.setExpandRatio(eastLayout, 1f);