com.jolira.enzian.tasks.ui.TasksViewer.java Source code

Java tutorial

Introduction

Here is the source code for com.jolira.enzian.tasks.ui.TasksViewer.java

Source

/**
 * Copyright (c) 2010 jolira. All rights reserved. This program and the accompanying materials are made available under
 * the terms of the GNU Public License 2.0 which is available at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 */

package com.jolira.enzian.tasks.ui;

import java.util.Arrays;
import java.util.List;

import javax.inject.Inject;

import org.apache.wicket.markup.html.basic.Label;
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.markup.html.list.PropertyListView;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;

import com.jolira.enzian.app.EnzianBase;
import com.jolira.enzian.tasks.Task;
import com.jolira.enzian.tasks.TaskExecutor;

/**
 * @author jfk
 * @date Oct 31, 2010 12:26:05 AM
 * @since 1.0
 */
public class TasksViewer extends EnzianBase {
    /**
     * Create a new viewer
     * 
     * @param executor
     *            the executor to be displayed
     */
    @Inject
    public TasksViewer(final TaskExecutor executor) {
        final IModel<? extends List<? extends Task>> mdl = new LoadableDetachableModel<List<Task>>() {
            private static final long serialVersionUID = -2820663100472235781L;

            @Override
            protected List<Task> load() {
                final Task[] tasks = executor.getTasks();

                return Arrays.asList(tasks);
            }
        };
        final ListView<Task> taskView = new PropertyListView<Task>("task", mdl) {
            private static final long serialVersionUID = -7625713403597488210L;

            @Override
            protected void populateItem(final ListItem<Task> item) {
                item.add(new Label("name"));
                item.add(new Label("status"));
                item.add(new Label("progress", "N/A"));
                item.add(new Link<Void>("cancel") {
                    private static final long serialVersionUID = 2527181238727006875L;

                    @Override
                    public void onClick() {
                        final Task task = item.getModelObject();

                        task.cancel();
                    }
                });
            }
        };

        add(taskView);
    }
}