/* * Copyright 2011 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.google.gwt.sample.mobilewebapp.client.desktop; import com.google.gwt.cell.client.DateCell; import com.google.gwt.sample.mobilewebapp.presenter.tasklist.TaskListView; import com.google.gwt.sample.mobilewebapp.shared.TaskProxy; import com.google.gwt.user.cellview.client.Column; import com.google.gwt.user.cellview.client.DataGrid; import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy; import com.google.gwt.user.cellview.client.TextColumn; import com.google.gwt.user.client.ui.ResizeComposite; import com.google.gwt.view.client.NoSelectionModel; import com.google.gwt.view.client.SelectionChangeEvent; import com.google.gwt.view.client.SelectionModel; import java.util.Date; import java.util.List; /** * View used to display the list of Tasks. */ public class DesktopTaskListView extends ResizeComposite implements TaskListView { /** * Displays the list of tasks. */ DataGrid<TaskProxy> taskList; /** * The presenter for this view. */ private Presenter presenter; /** * Construct a new {@link DesktopTaskListView}. */ public DesktopTaskListView() { // Create the CellTable. taskList = new DataGrid<TaskProxy>(); taskList.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED); taskList.setWidth("100%"); // Add the task name column. Column<TaskProxy, String> nameColumn = new TextColumn<TaskProxy>() { @Override public String getValue(TaskProxy object) { return (object == null) ? null : object.getName(); } }; taskList.addColumn(nameColumn, "Task"); // Add the task notes column. Column<TaskProxy, String> notesColumn = new TextColumn<TaskProxy>() { @Override public String getValue(TaskProxy object) { return (object == null) ? "" : object.getNotes(); } }; taskList.addColumn(notesColumn, "Description"); // Add the task due date column. Column<TaskProxy, Date> dateColumn = new Column<TaskProxy, Date>(new DateCell()) { @Override public Date getValue(TaskProxy object) { return (object == null) ? null : object.getDueDate(); } }; taskList.addColumn(dateColumn, "Due Date"); /* * Inform the presenter when the user selects a task from the task list. */ final NoSelectionModel<TaskProxy> selectionModel = new NoSelectionModel<TaskProxy>(); taskList.setSelectionModel(selectionModel); selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() { @Override public void onSelectionChange(SelectionChangeEvent event) { // Edit the task. if (presenter != null) { presenter.selectTask(selectionModel.getLastSelectedObject()); } } }); // Initialize the widget. initWidget(taskList); } @Override public void clearList() { taskList.setVisibleRangeAndClearData(taskList.getVisibleRange(), true); } public void setPresenter(Presenter presenter) { if (this.presenter != null) { this.presenter.stop(); } this.presenter = presenter; } public void setSelectionModel(SelectionModel<TaskProxy> selectionModel) { taskList.setSelectionModel(selectionModel); } @Override public void setTasks(List<TaskProxy> tasks) { taskList.setRowData(tasks); } }