parent
4c228dc743
commit
0e5e93bb8c
@ -0,0 +1,78 @@ |
|||||||
|
package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.components; |
||||||
|
|
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
import org.vaadin.teemu.switchui.Switch; |
||||||
|
|
||||||
|
import com.vaadin.data.Binder; |
||||||
|
import com.vaadin.data.HasValue.ValueChangeEvent; |
||||||
|
import com.vaadin.ui.Button; |
||||||
|
import com.vaadin.ui.Panel; |
||||||
|
import com.vaadin.ui.TextField; |
||||||
|
import com.vaadin.ui.VerticalLayout; |
||||||
|
import com.vaadin.ui.Window; |
||||||
|
|
||||||
|
import de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.PersonDao; |
||||||
|
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.GroupDef; |
||||||
|
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; |
||||||
|
|
||||||
|
public class PersonEditDialog extends Window { |
||||||
|
|
||||||
|
private static final long serialVersionUID = 4692332924201974714L; |
||||||
|
private final TextField textPrename; |
||||||
|
private final TextField textSureName; |
||||||
|
private final Person person; |
||||||
|
|
||||||
|
private final Binder<Person> binder; |
||||||
|
|
||||||
|
public PersonEditDialog(List<GroupDef> groups, Person person, PersonDao dao) { |
||||||
|
this.person = person; |
||||||
|
|
||||||
|
textPrename = new TextField(); |
||||||
|
textSureName = new TextField(); |
||||||
|
Panel groupPanel = new Panel("Gruppen"); |
||||||
|
VerticalLayout glay = new VerticalLayout(); |
||||||
|
groupPanel.setContent(glay); |
||||||
|
List<GroupDef> selected = new ArrayList<>(); |
||||||
|
for (GroupDef tmp : person.getPersongroups()) { |
||||||
|
selected.add(tmp); |
||||||
|
} |
||||||
|
for (GroupDef g: groups) { |
||||||
|
Switch sw = new Switch(g.getName()); |
||||||
|
sw.setData(g); |
||||||
|
sw.setValue(selected.contains(g)); |
||||||
|
sw.addValueChangeListener(ev -> groupChanged(ev)); |
||||||
|
glay.addComponent(sw); |
||||||
|
} |
||||||
|
|
||||||
|
binder = new Binder<>(); |
||||||
|
binder.forField(textPrename).bind(Person::getPrename, Person::setPrename); |
||||||
|
binder.forField(textSureName).bind(Person::getSurname, Person::setSurname); |
||||||
|
binder.readBean(person); |
||||||
|
|
||||||
|
Button close = new Button("Schließen"); |
||||||
|
close.addClickListener(ev -> PersonEditDialog.this.close()); |
||||||
|
Button ok = new Button("Speichern"); |
||||||
|
ok.addClickListener(ev -> { |
||||||
|
binder.writeBeanIfValid(person); |
||||||
|
dao.update(person); |
||||||
|
}); |
||||||
|
VerticalLayout layout = new VerticalLayout(); |
||||||
|
layout.addComponents(textPrename, textSureName, groupPanel, close, ok); |
||||||
|
setContent(layout); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
private void groupChanged(ValueChangeEvent<Boolean> ev) { |
||||||
|
GroupDef group = (GroupDef) ((Switch)ev.getComponent()).getData(); |
||||||
|
List<GroupDef> pg = person.getPersongroups(); |
||||||
|
if (ev.getValue()) { |
||||||
|
pg.add(group); |
||||||
|
} else { |
||||||
|
pg.remove(group); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
Loading…
Reference in new issue