Auto stash before merge of "master" and "origin/master"

master
Markus Kreth 5 years ago
parent 66b7547453
commit d6ffea86b2
  1. 2
      .classpath
  2. 5
      .settings/com.vaadin.integration.eclipse.prefs
  3. 690
      src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/components/PersonGrid.java

@ -35,7 +35,7 @@
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/> <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="src" output="target/classes" path="target/generated-resources/gwt"> <classpathentry excluding="**" kind="src" output="target/classes" path="target/generated-resources/gwt">
<attributes> <attributes>
<attribute name="ignore_optional_problems" value="true"/> <attribute name="ignore_optional_problems" value="true"/>
<attribute name="optional" value="true"/> <attribute name="optional" value="true"/>

@ -1,5 +1,2 @@
com.vaadin.integration.eclipse.mavenLatestVersionsUpgrade=["8.6.4","8.9.4"] com.vaadin.integration.eclipse.mavenLatestVersionsUpgrade=["8.4.5","8.5.1"]
com.vaadin.integration.eclipse.previousCompileAction=both
com.vaadin.integration.eclipse.useLatestNightly=false
com.vaadin.integration.eclipse.widgetsetDirty=true
eclipse.preferences.version=1 eclipse.preferences.version=1

@ -1,356 +1,334 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components; package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle; import java.time.format.FormatStyle;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.vaadin.data.HasValue.ValueChangeEvent; import com.vaadin.data.HasValue.ValueChangeEvent;
import com.vaadin.data.provider.DataProvider; import com.vaadin.data.provider.DataProvider;
import com.vaadin.data.provider.ListDataProvider; import com.vaadin.data.provider.ListDataProvider;
import com.vaadin.event.selection.SelectionListener; import com.vaadin.event.selection.SelectionListener;
import com.vaadin.event.selection.SingleSelectionEvent; import com.vaadin.event.selection.SingleSelectionEvent;
import com.vaadin.icons.VaadinIcons; import com.vaadin.icons.VaadinIcons;
import com.vaadin.shared.ui.ContentMode; import com.vaadin.shared.ui.ContentMode;
import com.vaadin.ui.Button; import com.vaadin.ui.Button;
import com.vaadin.ui.CheckBox; import com.vaadin.ui.CheckBox;
import com.vaadin.ui.ComboBox; import com.vaadin.ui.ComboBox;
import com.vaadin.ui.Component; import com.vaadin.ui.Component;
import com.vaadin.ui.Grid; import com.vaadin.ui.Grid;
import com.vaadin.ui.Grid.Column; import com.vaadin.ui.Grid.Column;
import com.vaadin.ui.Grid.SelectionMode; import com.vaadin.ui.Grid.SelectionMode;
import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label; import com.vaadin.ui.Label;
import com.vaadin.ui.Layout; import com.vaadin.ui.Layout;
import com.vaadin.ui.TextField; import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.components.grid.GridMultiSelect; import com.vaadin.ui.components.grid.GridMultiSelect;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.business.PersonBusiness; import de.kreth.vaadin.clubhelper.vaadinclubhelper.business.PersonBusiness;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.GroupDao; import de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.GroupDao;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEvent; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEvent;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Gender; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Gender;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.GroupDef; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.GroupDef;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Startpass; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Startpass;
public class PersonGrid extends VerticalLayout { public class PersonGrid extends VerticalLayout {
private static final long serialVersionUID = -8148097982839343673L; private static final long serialVersionUID = -8148097982839343673L;
private final transient Logger log = LoggerFactory.getLogger(getClass()); private final transient Logger log = LoggerFactory.getLogger(getClass());
private final transient DateTimeFormatter birthFormat = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM); private final transient DateTimeFormatter birthFormat = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM);
private final ListDataProvider<Person> dataProvider; private final ListDataProvider<Person> dataProvider;
private final Grid<Person> grid; private final Grid<Person> grid;
private final CheckBox checkIncluded; private final CheckBox checkIncluded;
private final ComboBox<GroupDef> comboGroups; private final ComboBox<GroupDef> comboGroups;
private final TextField textFilter; private final TextField textFilter;
private final PersonBusiness personDao; private final PersonBusiness personDao;
private List<GroupDef> allGroups; private List<GroupDef> allGroups;
private PersonFilter filter; private PersonFilter filter;
private ClubEvent currentEvent; private ClubEvent currentEvent;
private Column<Person, String> startpassColumn; private Column<Person, String> startpassColumn;
private Layout filters; private Layout filters;
private SelectionMode currentSelectionMode; private SelectionMode currentSelectionMode;
private Column<Person, ?> genderColumn; private Column<Person, ?> genderColumn;
private Column<Person, ? extends Component> deleteButtonColumn; private Column<Person, ? extends Component> deleteButtonColumn;
public PersonGrid(GroupDao groupDao, PersonBusiness personDao) { public PersonGrid(GroupDao groupDao, PersonBusiness personDao) {
setId("main.person"); setId("main.person");
setCaption("Teilnehmer"); setCaption("Teilnehmer");
addStyleName("bold-caption"); addStyleName("bold-caption");
this.personDao = personDao; this.personDao = personDao;
checkIncluded = new CheckBox("Nur gemeldete"); checkIncluded = new CheckBox("Nur gemeldete");
comboGroups = new ComboBox<>("Gruppenfilter"); comboGroups = new ComboBox<>("Gruppenfilter");
textFilter = new TextField("Namenfilter"); textFilter = new TextField("Namenfilter");
textFilter.setIcon(VaadinIcons.SEARCH); textFilter.setIcon(VaadinIcons.SEARCH);
filters = setupFilterComponents(); filters = setupFilterComponents();
allGroups = groupDao.listAll(); allGroups = groupDao.listAll();
comboGroups.setItems(allGroups); comboGroups.setItems(allGroups);
log.info("Loaded Groups: {}", allGroups); log.info("Loaded Groups: {}", allGroups);
filter = new PersonFilter(personDao); filter = new PersonFilter(personDao);
dataProvider = DataProvider.ofCollection(filter.asCollection()); dataProvider = DataProvider.ofCollection(filter.asCollection());
grid = new Grid<>(); grid = new Grid<>();
setupPersonGrid(); setupPersonGrid();
setMargin(false); setMargin(false);
addComponents(filters, grid); addComponents(filters, grid);
} }
void setupPersonGrid() { void setupPersonGrid() {
filter.add(() -> { filter.add(() -> {
setEvent(currentEvent); setEvent(currentEvent);
}); });
dataProvider.addDataProviderListener(filter); dataProvider.addDataProviderListener(filter);
grid.setDataProvider(dataProvider); grid.setDataProvider(dataProvider);
grid.setId("person.grid"); grid.setId("person.grid");
grid.setSizeFull(); grid.setSizeFull();
grid.setSelectionMode(SelectionMode.SINGLE); grid.setSelectionMode(SelectionMode.SINGLE);
grid.addColumn(Person::getPrename).setCaption("Vorname"); grid.addColumn(Person::getPrename).setCaption("Vorname");
grid.addColumn(Person::getSurname).setCaption("Nachname"); grid.addColumn(Person::getSurname).setCaption("Nachname");
grid.addColumn(Person::getBirth, b -> b != null ? birthFormat.format(b) : "").setCaption("Geburtstag") grid.addColumn(Person::getBirth, b -> b != null ? birthFormat.format(b) : "").setCaption("Geburtstag")
.setHidable(true); .setHidable(true);
startpassColumn = grid.addColumn(p -> { startpassColumn = grid.addColumn(p -> {
Startpass startpass = p.getStartpass(); Startpass startpass = p.getStartpass();
if (startpass != null) { if (startpass != null) {
return startpass.getStartpassNr(); return startpass.getStartpassNr();
} }
else { else {
return null; return null;
} }
}).setCaption("Startpass Nr."); }).setCaption("Startpass Nr.");
startpassColumn.setHidable(true); startpassColumn.setHidable(true);
genderColumn = grid.addComponentColumn(p -> { genderColumn = grid.addComponentColumn(p -> {
Gender gender = p.getGender(); Gender gender = p.getGender();
VaadinIcons icon; VaadinIcons icon;
if (gender == null) { if (gender == null) {
icon = VaadinIcons.QUESTION; icon = VaadinIcons.QUESTION;
} }
else { else {
switch (gender) { switch (gender) {
case FEMALE: case FEMALE:
icon = VaadinIcons.FEMALE; icon = VaadinIcons.FEMALE;
break; break;
case MALE: case MALE:
icon = VaadinIcons.MALE; icon = VaadinIcons.MALE;
break; break;
default: default:
icon = VaadinIcons.QUESTION; icon = VaadinIcons.QUESTION;
break; break;
} }
} }
return new Label(icon.getHtml(), ContentMode.HTML); return new Label(icon.getHtml(), ContentMode.HTML);
}); });
genderColumn.setHidable(true); genderColumn.setHidable(true);
startpassColumn.setHidden(false); startpassColumn.setHidden(false);
genderColumn.setHidden(true); genderColumn.setHidden(true);
deleteButtonColumn = grid.addComponentColumn(c -> { deleteButtonColumn = grid.addComponentColumn(c -> {
Button deleteButton = new Button(VaadinIcons.TRASH); Button deleteButton = new Button(VaadinIcons.TRASH);
deleteButton.addClickListener(ev -> delete(c)); deleteButton.addClickListener(ev -> delete(c));
deleteButton.setWidthUndefined(); deleteButton.setWidthUndefined();
return deleteButton; return deleteButton;
}).setCaption("Löschen"); }).setCaption("Löschen");
deleteButtonColumn.setHidden(true); deleteButtonColumn.setHidden(true);
} }
public VaadinIcons genderToImage(Gender gender) { public VaadinIcons genderToImage(Gender gender) {
VaadinIcons icon; VaadinIcons icon;
if (gender == null) { if (gender == null) {
icon = VaadinIcons.QUESTION; icon = VaadinIcons.QUESTION;
} }
else { else {
switch (gender) { switch (gender) {
case FEMALE: case FEMALE:
icon = VaadinIcons.FEMALE; icon = VaadinIcons.FEMALE;
break; break;
case MALE: case MALE:
icon = VaadinIcons.MALE; icon = VaadinIcons.MALE;
break; break;
default: default:
icon = VaadinIcons.QUESTION; icon = VaadinIcons.QUESTION;
break; break;
} }
} }
return icon; return icon;
} }
public void enableDeleteColumn(boolean enable) { public void enableDeleteColumn(boolean enable) {
deleteButtonColumn.setHidden(!enable); deleteButtonColumn.setHidden(!enable);
} }
private void delete(Person c) { private void delete(Person c) {
ConfirmDialog dlg = ConfirmDialog.builder().setCaption("Person löschen") ConfirmDialog dlg = ConfirmDialog.builder().setCaption("Person löschen")
.setMessage(c.getPrename() + " " + c.getSurname() + " wirklich löschen?").yesCancel() .setMessage(c.getPrename() + " " + c.getSurname() + " wirklich löschen?").yesCancel()
.setResultHandler(button -> { .setResultHandler(button -> {
if (button == ConfirmDialog.Buttons.YES) { if (button == ConfirmDialog.Buttons.YES) {
personDao.delete(c); personDao.delete(c);
dataProvider.refreshAll(); dataProvider.refreshAll();
} }
}).build(); }).build();
getUI().addWindow(dlg); getUI().addWindow(dlg);
} }
public void setSelectionMode(SelectionMode selectionMode) { public void setSelectionMode(SelectionMode selectionMode) {
grid.setSelectionMode(selectionMode); grid.setSelectionMode(selectionMode);
currentSelectionMode = selectionMode; currentSelectionMode = selectionMode;
if (selectionMode == SelectionMode.MULTI) { if (selectionMode == SelectionMode.MULTI) {
checkIncluded.setVisible(true); checkIncluded.setVisible(true);
} }
} }
private Layout setupFilterComponents() { private Layout setupFilterComponents() {
checkIncluded.setId("person.filter.checked"); checkIncluded.setId("person.filter.checked");
checkIncluded.addValueChangeListener(ev -> onSelectedOnly(ev)); checkIncluded.addValueChangeListener(ev -> onSelectedOnly(ev));
checkIncluded.setVisible(false); checkIncluded.setVisible(false);
comboGroups.setId("person.filter.groups"); comboGroups.setId("person.filter.groups");
comboGroups.setEmptySelectionAllowed(true); comboGroups.setEmptySelectionAllowed(true);
comboGroups.setEmptySelectionCaption("Alle"); comboGroups.setEmptySelectionCaption("Alle");
comboGroups.setItemCaptionGenerator(GroupDef::getName); comboGroups.setItemCaptionGenerator(GroupDef::getName);
comboGroups.addSelectionListener(ev -> onGroupSelected(ev)); comboGroups.addSelectionListener(ev -> onGroupSelected(ev));
textFilter.setId("person.filter.namefilter"); textFilter.setId("person.filter.namefilter");
textFilter.addValueChangeListener(ev -> textFilterChanged(ev)); textFilter.addValueChangeListener(ev -> textFilterChanged(ev));
HorizontalLayout filters = new HorizontalLayout(); HorizontalLayout filters = new HorizontalLayout();
filters.setMargin(false); filters.setMargin(false);
filters.addComponents(checkIncluded, comboGroups, textFilter); filters.addComponents(checkIncluded, comboGroups, textFilter);
return filters; return filters;
} }
private void textFilterChanged(ValueChangeEvent<String> ev) { private void textFilterChanged(ValueChangeEvent<String> ev) {
String value = ev.getValue(); String value = ev.getValue();
if (value != null && value.length() >= 2) { if (value != null && value.length() >= 2) {
filter.setNameFilter(value); filter.setNameFilter(value);
dataProvider.refreshAll(); dataProvider.refreshAll();
} }
else { else {
filter.setNameFilter(null); filter.setNameFilter(null);
dataProvider.refreshAll(); dataProvider.refreshAll();
} }
} }
public void hideFilter() { public void hideFilter() {
filters.setVisible(false); filters.setVisible(false);
} }
private void onSelectedOnly(ValueChangeEvent<Boolean> ev) { private void onSelectedOnly(ValueChangeEvent<Boolean> ev) {
updateSelectedOnlyFilter(ev.getValue()); updateSelectedOnlyFilter(ev.getValue());
} }
public void setSelectedOnly() { public void setSelectedOnly() {
updateSelectedOnlyFilter(true); updateSelectedOnlyFilter(true);
} }
private void updateSelectedOnlyFilter(Boolean selectedOnly) { private void updateSelectedOnlyFilter(Boolean selectedOnly) {
if (selectedOnly != null && selectedOnly.equals(Boolean.TRUE)) { if (selectedOnly != null && selectedOnly.equals(Boolean.TRUE)) {
filter.setSelectedPersons(grid.getSelectedItems()); filter.setSelectedPersons(grid.getSelectedItems());
} }
else { else {
filter.setSelectedPersons(null); filter.setSelectedPersons(null);
} }
dataProvider.refreshAll(); dataProvider.refreshAll();
} }
public void refreshItem(Person item) { public void refreshItem(Person item) {
dataProvider.refreshItem(item); dataProvider.refreshItem(item);
} }
public void onPersonSelect(SelectionListener<Person> listener) throws UnsupportedOperationException { public void onPersonSelect(SelectionListener<Person> listener) throws UnsupportedOperationException {
grid.addSelectionListener(listener); grid.addSelectionListener(listener);
} }
private void selectItems(Person... items) { private void selectItems(Person... items) {
if (currentSelectionMode == SelectionMode.MULTI) { if (currentSelectionMode == SelectionMode.MULTI) {
GridMultiSelect<Person> asMultiSelect = grid.asMultiSelect(); GridMultiSelect<Person> asMultiSelect = grid.asMultiSelect();
asMultiSelect.deselectAll(); asMultiSelect.deselectAll();
if (items == null || items.length == 0) { if (items == null || items.length == 0) {
log.debug("No Persons selected."); log.debug("No Persons selected.");
} }
else { else {
log.debug("Selecting Persons: {}", Arrays.asList(items)); log.debug("Selecting Persons: {}", Arrays.asList(items));
asMultiSelect.selectItems(items); asMultiSelect.selectItems(items);
} }
} }
} }
public void deselectItems(Person... items) { public void setTitle(String value) {
grid.asMultiSelect().deselect(items); textTitle.setValue(value == null ? "": value);
} }
public void select(Person item) { public void onPersonEdit() {
grid.select(item); startpassColumn.setHidden(true);
} genderColumn.setHidden(false);
}
public void deselect(Person item) {
grid.deselect(item); public void setEvent(ClubEvent ev) {
}
if (currentSelectionMode == SelectionMode.MULTI) {
public void deselectAll() { if (ev != null) {
grid.deselectAll(); updateSelection(ev);
} }
else {
private void onGroupSelected(SingleSelectionEvent<GroupDef> ev) { selectItems(new Person[0]);
}
Set<GroupDef> groupMemberFilter = ev.getAllSelectedItems(); }
if (groupMemberFilter.isEmpty()) { else if (ev != null) {
groupMemberFilter = null; Collection<Person> items = dataProvider.getItems();
} items.clear();
filter.setSelectedGroups(groupMemberFilter); items.addAll(ev.getPersons());
dataProvider.refreshAll(); }
} this.currentEvent = ev;
}
public void onPersonEdit() {
startpassColumn.setHidden(true); public void updateSelection(ClubEvent ev) {
genderColumn.setHidden(false); Set<Person> persons = ev.getPersons();
} if (persons != null) {
selectItems(persons.toArray(new Person[0]));
public void setEvent(ClubEvent ev) { }
else {
if (currentSelectionMode == SelectionMode.MULTI) { selectItems(new Person[0]);
if (ev != null) { }
updateSelection(ev); }
}
else { }
selectItems(new Person[0]);
}
}
else if (ev != null) {
Collection<Person> items = dataProvider.getItems();
items.clear();
items.addAll(ev.getPersons());
}
this.currentEvent = ev;
}
public void updateSelection(ClubEvent ev) {
Set<Person> persons = ev.getPersons();
if (persons != null) {
selectItems(persons.toArray(new Person[0]));
}
else {
selectItems(new Person[0]);
}
}
}

Loading…
Cancel
Save