Reorganized Main Layout

master
Markus Kreth 7 years ago
parent 73f93f0697
commit ff6b6fe353
  1. 1
      .classpath
  2. 35
      .settings/org.eclipse.wst.common.component
  3. 5
      pom.xml
  4. 2
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/HeadView.java
  5. 29
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/MainView.java
  6. 1
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/CalendarComponent.java
  7. 23
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonFilter.java
  8. 38
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonGrid.java

@ -39,7 +39,6 @@
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
<attributes>
<attribute name="module" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>

@ -1,64 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="vaadin-clubhelper-1.0.2-SNAPSHOT">
<wb-module deploy-name="vaadin-clubhelper-1.0.3">
<wb-resource deploy-path="/" source-path="/WebContent"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/target/generated-resources/gwt"/>
<property name="context-root" value="vaadin-clubhelper"/>
<property name="java-output-path" value="/vaadin-clubhelper/target/classes"/>
</wb-module>

@ -86,11 +86,6 @@
<groupId>com.vaadin</groupId>
<artifactId>vaadin-context-menu</artifactId>
</dependency>
<dependency>
<groupId>org.vaadin.addons</groupId>
<artifactId>border-layout-addon</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.vaadin.ui</groupId>
<artifactId>numberfield</artifactId>

@ -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;

@ -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);
}

@ -42,7 +42,6 @@ public class CalendarComponent extends CustomComponent {
calendar.setSizeFull();
calendar.addListener(ev -> calendarEvent(ev));
setSizeFull();
setCompositionRoot(calendar);
}

@ -25,6 +25,7 @@ public class PersonFilter implements SerializablePredicate<Person>, DataProvider
private final List<Person> 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<Person>, 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<Person>, 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<Person>, DataProvider
}
}
public void setNameFilter(String value) {
if (value != null) {
this.nameFilter = value.toLowerCase();
} else {
this.nameFilter = value;
}
}
public void setSelectedGroups(Set<GroupDef> selected) {
this.selectedGroups = selected;
}

@ -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<Person> grid;
private final CheckBox checkIncluded;
private final ComboBox<GroupDef> comboGroups;
private final TextField textFilter;
private Boolean selectedOnlyFilter;
private Set<GroupDef> groupMemberFilter;
private List<GroupDef> 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<String> 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<Boolean> 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<GroupDef> ev) {
groupMemberFilter = ev.getAllSelectedItems();
Set<GroupDef> groupMemberFilter = ev.getAllSelectedItems();
if (groupMemberFilter.isEmpty()) {
groupMemberFilter = null;
}
updateFilter();
filter.setSelectedGroups(groupMemberFilter);
dataProvider.refreshAll();
}
public void onPersonEdit() {

Loading…
Cancel
Save