/******************************************************************************* * Copyright (c) 2011-2014 Fernando Petrola * * This file is part of Dragome SDK. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html ******************************************************************************/ package com.dragome.examples; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import com.dragome.examples.model.Person; import com.dragome.examples.service.PersonService; import com.dragome.forms.bindings.builders.ModelBinder; import com.dragome.guia.GuiaVisualActivity; import com.dragome.guia.components.VisualButtonImpl; import com.dragome.guia.components.VisualComboBoxImpl; import com.dragome.guia.components.VisualPanelImpl; import com.dragome.guia.components.VisualTextFieldImpl; import com.dragome.guia.components.interfaces.VisualPanel; import com.dragome.templates.TemplateRepeater; import com.dragome.templates.interfaces.Template; import com.dragome.web.annotations.PageAlias; @PageAlias(alias= "crud1") public class PersonCrudPage extends GuiaVisualActivity { PersonService personService= serviceFactory.createSyncService(PersonService.class); List<Person> persons= new ArrayList<Person>(); public void build() { mainPanel.addChild(new VisualButtonImpl("save-button", v -> personService.savePersons(persons))); mainPanel.addChild(new VisualButtonImpl("add-button", v -> showPersons(Arrays.asList(new Person())))); showPersons(personService.getPersons()); } private void showPersons(final List<Person> somePersons) { persons.addAll(somePersons); new TemplateRepeater<Person>(somePersons, mainTemplate, "row", this::fillTemplate, false).repeatItems(); } public void fillTemplate(final Person person, Template itemTemplate) { final VisualPanel rowPanel= new VisualPanelImpl(itemTemplate); mainPanel.addChild(rowPanel); rowPanel.addChild(new VisualButtonImpl("delete-button", v -> { persons.remove(person); rowPanel.getParent().removeChild(rowPanel); })); ModelBinder<Person> modelBinder= new ModelBinder<Person>(person, rowPanel); modelBinder.bindToPanel(new VisualTextFieldImpl<String>("givenName")); modelBinder.bindToPanel(new VisualTextFieldImpl<String>("surname")); modelBinder.bindToPanel(new VisualComboBoxImpl<String>("nickname", Arrays.asList("Pelusa", "Burrito", "Bocha", "Bruja"))); } }