diff --git a/.classpath b/.classpath
index c12c8d0..5772ac7 100644
--- a/.classpath
+++ b/.classpath
@@ -39,7 +39,6 @@
-
diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
index 8216514..c34e8ca 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -1,64 +1,75 @@
-
+
-
-
+
+
+
+
-
+
+
-
+
+
-
+
+
-
+
+
-
+
+
-
+
+
-
+
+
-
+
+
-
+
+
diff --git a/pom.xml b/pom.xml
index a387eec..18a7394 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,11 +86,6 @@
com.vaadin
vaadin-context-menu
-
- org.vaadin.addons
- border-layout-addon
- 1.0
-
org.vaadin.ui
numberfield
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 f20319d..8bed1da 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
@@ -93,8 +93,6 @@ public class HeadView extends HorizontalLayout {
setComponentAlignment(personLabel, Alignment.MIDDLE_RIGHT);
setExpandRatio(monthName, 1.0f);
- setSizeFull();
-
this.startTime = startTime;
this.endTime = endTime;
this.dataProvider = dataProvider;
diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/MainView.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/MainView.java
index ee141b2..94bab65 100644
--- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/MainView.java
+++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/MainView.java
@@ -7,7 +7,6 @@ import java.util.concurrent.Executors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.vaadin.addon.borderlayout.BorderLayout;
import org.vaadin.addon.calendar.ui.CalendarComponentEvents;
import com.vaadin.event.selection.SelectionEvent;
@@ -30,7 +29,7 @@ import de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components.CalendarCompone
import de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components.PersonGrid;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components.SingleEventView;
-public class MainView extends BorderLayout implements NamedView {
+public class MainView extends VerticalLayout implements NamedView {
public static final String VIEW_NAME = "";
@@ -50,6 +49,10 @@ public class MainView extends BorderLayout implements NamedView {
private Navigator navigator;
+ private VerticalLayout eastLayout;
+
+ private HorizontalLayout mainLayout;
+
public MainView(PersonDao personDao, GroupDao groupDao, EventBusiness eventBusiness,
SecurityVerifier securityGroupVerifier) {
this.personDao = personDao;
@@ -64,7 +67,6 @@ public class MainView extends BorderLayout implements NamedView {
initUI(event);
LOGGER.info("Loaded UI and started fetch of Events");
} else {
-
if (securityVerifier.isLoggedin()) {
LOGGER.info("{} already initialized - opening Person View.", getClass().getName());
openPersonViewForEvent(eventBusiness.getCurrent());
@@ -72,12 +74,14 @@ public class MainView extends BorderLayout implements NamedView {
head.updateLoggedinPerson();
} else {
LOGGER.info("{} already initialized - but not loggedin.", getClass().getName());
+ detailClosed();
head.updateLoggedinPerson();
}
}
}
public void initUI(ViewChangeEvent event) {
+
navigator = event.getNavigator();
eventView = new SingleEventView(false);
@@ -104,7 +108,7 @@ public class MainView extends BorderLayout implements NamedView {
eventButtonLayout.addComponents(close, eventDetails);
eventButtonLayout.setVisible(false);
- VerticalLayout eastLayout = new VerticalLayout();
+ eastLayout = new VerticalLayout();
eastLayout.addComponents(eventView, personGrid, eventButtonLayout);
ClubEventProvider dataProvider = new ClubEventProvider();
@@ -115,13 +119,19 @@ public class MainView extends BorderLayout implements NamedView {
head = new HeadView(navigator, () -> calendar.getStartDate(), () -> calendar.getEndDate(), dataProvider,
securityVerifier);
+ head.setWidth("100%");
head.updateMonthText(calendar.getStartDate());
+
calendar.add(dateTime -> head.updateMonthText(dateTime));
+ mainLayout = new HorizontalLayout(calendar);
+ mainLayout.setSizeFull();
+ mainLayout.setExpandRatio(calendar, 2f);
+
+ addComponent(head);
+ addComponent(mainLayout);
+ setExpandRatio(mainLayout, 1f);
setSizeFull();
- addComponent(head, BorderLayout.PAGE_START);
- addComponent(calendar, BorderLayout.CENTER);
- addComponent(eastLayout, BorderLayout.LINE_END);
ExecutorService exec = Executors.newSingleThreadExecutor();
exec.execute(() -> {
@@ -149,6 +159,7 @@ public class MainView extends BorderLayout implements NamedView {
personGrid.setVisible(false);
eventView.setVisible(false);
eventButtonLayout.setVisible(false);
+ mainLayout.removeComponent(eastLayout);
}
private void onItemClick(CalendarComponentEvents.ItemClickEvent event) {
@@ -166,7 +177,6 @@ public class MainView extends BorderLayout implements NamedView {
LOGGER.debug("Opening detail view for {}", ev);
eventBusiness.setSelected(null);
-
eventView.setEvent(ev);
personGrid.setEnabled(false);
@@ -177,6 +187,9 @@ public class MainView extends BorderLayout implements NamedView {
eventView.setVisible(true);
eventButtonLayout.setVisible(true);
+ mainLayout.addComponent(eastLayout);
+ mainLayout.setExpandRatio(eastLayout, 1f);
+
eventBusiness.setSelected(ev);
}
diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/CalendarComponent.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/CalendarComponent.java
index 805dcb1..4a30acc 100644
--- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/CalendarComponent.java
+++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/CalendarComponent.java
@@ -42,7 +42,6 @@ public class CalendarComponent extends CustomComponent {
calendar.setSizeFull();
calendar.addListener(ev -> calendarEvent(ev));
- setSizeFull();
setCompositionRoot(calendar);
}
diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonFilter.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonFilter.java
index 3e99c64..af6db40 100644
--- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonFilter.java
+++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonFilter.java
@@ -25,6 +25,7 @@ public class PersonFilter implements SerializablePredicate, DataProvider
private final List publishedList;
private final PersonDao personDao;
private final DefaultDataUpdateHandler updateHandler;
+ private String nameFilter;
public PersonFilter(PersonDao personDao) {
this.personDao = personDao;
@@ -34,7 +35,7 @@ public class PersonFilter implements SerializablePredicate, DataProvider
@Override
public boolean test(Person t) {
- if (selectedGroups == null && selectedPersons == null) {
+ if (selectedGroups == null && selectedPersons == null && nameFilter == null) {
return true;
}
@@ -44,9 +45,21 @@ public class PersonFilter implements SerializablePredicate, DataProvider
if (personInGroup(t) == false) {
return false;
}
+ if (personNameMatch(t) == false) {
+ return false;
+ }
return true;
}
+ private boolean personNameMatch(Person t) {
+ if (nameFilter == null || nameFilter.isBlank()) {
+ return true;
+ }
+ boolean contains = t.getPrename().toLowerCase().contains(nameFilter)
+ || t.getSurname().toLowerCase().contains(nameFilter);
+ return contains;
+ }
+
private boolean personInGroup(Person t) {
if (selectedGroups != null) {
return t.getGroups() != null && haveCommonGroup(t.getGroups(), selectedGroups);
@@ -86,6 +99,14 @@ public class PersonFilter implements SerializablePredicate, DataProvider
}
}
+ public void setNameFilter(String value) {
+ if (value != null) {
+ this.nameFilter = value.toLowerCase();
+ } else {
+ this.nameFilter = value;
+ }
+ }
+
public void setSelectedGroups(Set selected) {
this.selectedGroups = selected;
}
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 c74cf41..2f28594 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
@@ -22,6 +22,7 @@ import com.vaadin.ui.Grid.Column;
import com.vaadin.ui.Grid.SelectionMode;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Layout;
+import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.components.grid.GridMultiSelect;
@@ -44,10 +45,8 @@ public class PersonGrid extends VerticalLayout {
private final Grid grid;
private final CheckBox checkIncluded;
private final ComboBox comboGroups;
+ private final TextField textFilter;
- private Boolean selectedOnlyFilter;
-
- private Set groupMemberFilter;
private List allGroups;
private PersonFilter filter;
private ClubEvent currentEvent;
@@ -64,6 +63,7 @@ public class PersonGrid extends VerticalLayout {
checkIncluded = new CheckBox("Nur gemeldete");
comboGroups = new ComboBox<>("Gruppenfilter");
+ textFilter = new TextField("Namenfilter");
filters = setupFilterComponents();
allGroups = groupDao.listAll();
@@ -128,34 +128,43 @@ public class PersonGrid extends VerticalLayout {
comboGroups.setItemCaptionGenerator(GroupDef::getName);
comboGroups.addSelectionListener(ev -> onGroupSelected(ev));
+ textFilter.setId("person.filter.namefilter");
+ textFilter.addValueChangeListener(ev -> textFilterChanged(ev));
HorizontalLayout filters = new HorizontalLayout();
filters.setMargin(false);
- filters.addComponents(checkIncluded, comboGroups);
+ filters.addComponents(checkIncluded, comboGroups, textFilter);
return filters;
}
+ private void textFilterChanged(ValueChangeEvent ev) {
+ String value = ev.getValue();
+ if (value != null && value.length() >= 2) {
+ filter.setNameFilter(value);
+ dataProvider.refreshAll();
+ } else {
+ filter.setNameFilter(null);
+ dataProvider.refreshAll();
+ }
+ }
+
public void hideFilter() {
filters.setVisible(false);
}
private void onSelectedOnly(ValueChangeEvent ev) {
- this.selectedOnlyFilter = ev.getValue();
- updateFilter();
+ updateSelectedOnlyFilter(ev.getValue());
}
public void setSelectedOnly() {
- this.selectedOnlyFilter = true;
- updateFilter();
+ updateSelectedOnlyFilter(true);
}
- private void updateFilter() {
- if (selectedOnlyFilter != null && selectedOnlyFilter.equals(Boolean.TRUE)) {
+ private void updateSelectedOnlyFilter(Boolean selectedOnly) {
+ if (selectedOnly != null && selectedOnly.equals(Boolean.TRUE)) {
filter.setSelectedPersons(grid.getSelectedItems());
} else {
filter.setSelectedPersons(null);
}
-
- filter.setSelectedGroups(groupMemberFilter);
dataProvider.refreshAll();
}
@@ -198,11 +207,12 @@ public class PersonGrid extends VerticalLayout {
private void onGroupSelected(SingleSelectionEvent ev) {
- groupMemberFilter = ev.getAllSelectedItems();
+ Set groupMemberFilter = ev.getAllSelectedItems();
if (groupMemberFilter.isEmpty()) {
groupMemberFilter = null;
}
- updateFilter();
+ filter.setSelectedGroups(groupMemberFilter);
+ dataProvider.refreshAll();
}
public void onPersonEdit() {