com.wickettasks.web.pages.UserTaskListsPage.java Source code

Java tutorial

Introduction

Here is the source code for com.wickettasks.web.pages.UserTaskListsPage.java

Source

/*
 * 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);
        }

    }

}