From 7deff438dec7a683122ad89e51276936fcf4392d Mon Sep 17 00:00:00 2001 From: Markus Kreth Date: Wed, 23 Jan 2019 03:07:24 +0100 Subject: [PATCH] Person Edit involved --- .../vaadinclubhelper/dao/PersonDaoImpl.java | 6 +++ .../vaadinclubhelper/data/Person.java | 11 +++++ .../vaadinclubhelper/ui/HeadView.java | 14 +++--- .../vaadinclubhelper/ui/PersonEditView.java | 2 +- .../ui/components/PersonEditDetails.java | 43 +++++++++++++++---- .../ui/components/PersonGrid.java | 6 ++- 6 files changed, 65 insertions(+), 17 deletions(-) diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoImpl.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoImpl.java index 8d9d4d1..32ea027 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoImpl.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoImpl.java @@ -13,6 +13,12 @@ public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao super(Person.class); } + @Override + public Person update(Person obj) { + + return super.update(obj); + } + @Override public Person findLoginUser(String username, String password) { TypedQuery query = entityManager.createNamedQuery(Person.QUERY_FINDLOGIN, Person.class); diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Person.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Person.java index 6ba3811..86e0764 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Person.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/data/Person.java @@ -311,6 +311,17 @@ public class Person extends BaseEntity implements Serializable { this.startpass = startpass; } + public void setStartpass(String startpass) { + if (this.startpass == null) { + if (startpass == null || startpass.isBlank()) { + return; + } + this.startpass = new Startpass(); + this.startpass.setPerson(this); + } + this.startpass.setStartpassNr(startpass); + } + @Override public int hashCode() { final int prime = 31; diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/HeadView.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/HeadView.java index 6c3e869..81087e6 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/HeadView.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/HeadView.java @@ -81,6 +81,7 @@ public class HeadView extends HorizontalLayout { personLabel = new Label(); personLabel.setStyleName("title_caption"); + personLabel.addStyleName("bold-caption"); this.addComponent(popupButton); this.addComponent(monthName); @@ -125,9 +126,14 @@ public class HeadView extends HorizontalLayout { if (loggedinPerson != null) { Set groups = loggedinPerson.getGroups(); if (contains(groups, "ADMIN") || contains(groups, "Übungsleiter")) { - contextMenu.addItem("Personen verwalten", ev1 -> switchToPersonEditUi()); + contextMenu.addItem("Personen verwalten", ev1 -> navigator.navigateTo(PersonEditView.VIEW_NAME)); } - contextMenu.addItem("Abmelden", ev1 -> session.setAttribute(Person.SESSION_LOGIN, null)); + contextMenu.addItem("Abmelden", ev1 -> { + session.setAttribute(Person.SESSION_LOGIN, null); + navigator.navigateTo(MainView.VIEW_NAME); + }); + } else { + contextMenu.addItem("Anmelden", ev1 -> navigator.navigateTo(LoginUI.VIEW_NAME)); } contextMenu.open(50, 50); } @@ -141,10 +147,6 @@ public class HeadView extends HorizontalLayout { return false; } - private void switchToPersonEditUi() { - navigator.navigateTo(PersonEditView.VIEW_NAME); - } - private void calendarExport(MenuItem ev1) { boolean monthOnly = ev1.getId() == monthItemId; diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/PersonEditView.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/PersonEditView.java index c059aeb..fe14fc5 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/PersonEditView.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/PersonEditView.java @@ -24,10 +24,10 @@ public class PersonEditView extends HorizontalLayout implements NamedView { personGrid.setSizeFull(); personGrid.onPersonEdit(); personGrid.onPersonSelect(ev -> selectedPerson(ev)); -// personGrid.setSelectionMode(SelectionMode.SINGLE); personDetails = new PersonEditDetails(groupDao.listAll(), personDao, false); personDetails.setSizeFull(); + personDetails.setPersonChangeHandler(personGrid::refreshItem); HorizontalLayout layout = new HorizontalLayout(); layout.addComponents(personGrid, personDetails); diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonEditDetails.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonEditDetails.java index fff31af..9e90dc4 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonEditDetails.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonEditDetails.java @@ -1,28 +1,34 @@ package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components; import java.util.List; +import java.util.function.Consumer; import org.vaadin.teemu.switchui.Switch; import com.vaadin.data.Binder; import com.vaadin.ui.Button; +import com.vaadin.ui.ComboBox; import com.vaadin.ui.DateField; +import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Panel; import com.vaadin.ui.TextField; import com.vaadin.ui.VerticalLayout; import de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.PersonDao; +import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Gender; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.GroupDef; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; +import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Startpass; -public class PersonEditDetails extends VerticalLayout { +public class PersonEditDetails extends HorizontalLayout { private static final long serialVersionUID = 4692332924201974714L; private final TextField textPrename; private final TextField textSureName; + private final DateField birthday; private final Binder binder; - private DateField birthday; + private Consumer personChangeHandler; private Person current; public PersonEditDetails(List groups, PersonDao dao) { @@ -31,17 +37,27 @@ public class PersonEditDetails extends VerticalLayout { public PersonEditDetails(List groups, PersonDao dao, boolean showCloseButton) { - textPrename = new TextField(); - textPrename.setCaption("Vorname"); - textSureName = new TextField(); - textSureName.setCaption("Nachname"); - birthday = new DateField(); - birthday.setCaption("Geburtstag"); + textPrename = new TextField("Vorname"); + textSureName = new TextField("Nachname"); + birthday = new DateField("Geburtstag"); + ComboBox genderBox = new ComboBox<>("Geschlecht"); + genderBox.setEmptySelectionAllowed(false); + genderBox.setItemCaptionGenerator(item -> item.localized()); + genderBox.setItems(Gender.values()); + TextField textStartPass = new TextField("Startpass"); binder = new Binder<>(); binder.forField(textPrename).bind(Person::getPrename, Person::setPrename); binder.forField(textSureName).bind(Person::getSurname, Person::setSurname); binder.forField(birthday).bind(Person::getBirth, Person::setBirth); + binder.forField(genderBox).bind(Person::getGender, Person::setGender); + binder.forField(textStartPass).bind(p -> { + Startpass startpass = p.getStartpass(); + if (startpass == null) { + return null; + } + return startpass.getStartpassNr(); + }, (p, value) -> p.setStartpass(value)); Panel groupPanel = new Panel("Gruppen"); VerticalLayout glay = new VerticalLayout(); @@ -72,11 +88,20 @@ public class PersonEditDetails extends VerticalLayout { if (binder.validate().isOk()) { binder.writeBeanIfValid(current); dao.update(current); + if (personChangeHandler != null) { + personChangeHandler.accept(current); + } } }); - addComponents(textPrename, textSureName, birthday, groupPanel, close, ok); + VerticalLayout layout = new VerticalLayout(textPrename, textSureName, birthday, genderBox, textStartPass, close, + ok); + addComponents(layout, groupPanel); + + } + public void setPersonChangeHandler(Consumer personChangeHandler) { + this.personChangeHandler = personChangeHandler; } public void setBean(Person person) { diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonGrid.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonGrid.java index 4a5e474..9b330f4 100644 --- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonGrid.java +++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonGrid.java @@ -154,6 +154,10 @@ public class PersonGrid extends VerticalLayout { dataProvider.refreshAll(); } + public void refreshItem(Person item) { + dataProvider.refreshItem(item); + } + public void onPersonSelect(SelectionListener listener) throws UnsupportedOperationException { grid.addSelectionListener(listener); } @@ -209,7 +213,7 @@ public class PersonGrid extends VerticalLayout { } else { selectItems(new Person[0]); } - } else { + } else if (ev != null) { Collection items = dataProvider.getItems(); items.clear(); items.addAll(ev.getPersons());