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