Java tutorial
/* * UserTaskListsPage.java * Copyright (c) 2009 Felix Cachaldora Sanchez * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE */ package com.wickettasks.web.pages; import java.util.List; import org.apache.wicket.PageParameters; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.LoadableDetachableModel; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.spring.injection.annot.SpringBean; import org.apache.wicket.validation.validator.StringValidator; import com.wickettasks.business.entities.tasklist.TaskList; import com.wickettasks.business.exceptions.user.AccessRestrictionException; import com.wickettasks.business.services.tasklist.TaskListService; import com.wickettasks.web.session.WicketTasksSession; public class UserTaskListsPage extends BasePage { @SpringBean TaskListService taskListService; final Integer userId; public UserTaskListsPage() { this.userId = WicketTasksSession.get().getUserId(); final IModel taskListsModel = new LoadableDetachableModel() { private static final long serialVersionUID = -9221220907456213207L; protected Object load() { return UserTaskListsPage.this.taskListService.findByUserId(UserTaskListsPage.this.userId); } }; add(new Label("tip", "Start by adding a task list") { private static final long serialVersionUID = -957582705825209906L; @SuppressWarnings("unchecked") @Override public boolean isVisible() { return ((List<TaskList>) taskListsModel.getObject()).isEmpty(); } }); WebMarkupContainer taskListDiv = new WebMarkupContainer("taskListDiv") { private static final long serialVersionUID = 3449396171479717013L; @SuppressWarnings("unchecked") @Override public boolean isVisible() { return !((List<TaskList>) taskListsModel.getObject()).isEmpty(); } }; add(taskListDiv); taskListDiv.add(new ListView("taskLists", taskListsModel) { private static final long serialVersionUID = 123423424L; @Override protected void populateItem(ListItem item) { TaskList taskList = (TaskList) item.getModelObject(); final Integer taskListId = taskList.getId(); Link tasksLink = new Link("tasksLink") { private static final long serialVersionUID = -2560837622401317239L; @Override public void onClick() { PageParameters tasksPageParameters = new PageParameters(); tasksPageParameters.put("taskListId", taskListId); setResponsePage(TasksPage.class, tasksPageParameters); } }; tasksLink.add(new Label("name", new PropertyModel(item.getModel(), "name"))); item.add(tasksLink); item.add(new Link("delete") { private static final long serialVersionUID = -2560837622401317239L; @Override public void onClick() { try { UserTaskListsPage.this.taskListService.delete(taskListId, UserTaskListsPage.this.userId); setResponsePage(UserTaskListsPage.class); } catch (AccessRestrictionException e) { error("Error deleting tasklist"); } } }); } }); add(new NewTaskListForm("newTaskListForm", this.userId)); } private class NewTaskListForm extends Form { private static final long serialVersionUID = 6594623741967230283L; private String name; private Integer formUserId; public NewTaskListForm(String id, Integer userId) { super(id); this.formUserId = userId; setModel(new CompoundPropertyModel(this)); TextField nameTextField = new TextField("name"); nameTextField.add(StringValidator.maximumLength(50)); nameTextField.setRequired(true); add(nameTextField); } @Override public void onSubmit() { UserTaskListsPage.this.taskListService.add(this.name, this.formUserId); setResponsePage(UserTaskListsPage.class); } } }