| /* |
| * 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.mobile; |
| |
| import com.google.gwt.core.client.GWT; |
| import com.google.gwt.sample.mobilewebapp.presenter.tasklist.TaskListView; |
| import com.google.gwt.sample.mobilewebapp.shared.TaskProxy; |
| import com.google.gwt.uibinder.client.UiBinder; |
| import com.google.gwt.uibinder.client.UiField; |
| import com.google.gwt.user.cellview.client.CellList; |
| import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy; |
| import com.google.gwt.user.client.ui.Composite; |
| import com.google.gwt.user.client.ui.Widget; |
| import com.google.gwt.view.client.NoSelectionModel; |
| import com.google.gwt.view.client.SelectionChangeEvent; |
| |
| import java.util.List; |
| |
| /** |
| * View used to display the list of Tasks. |
| */ |
| public class MobileTaskListView extends Composite implements TaskListView { |
| /** |
| * Resources used by the mobile CellList. |
| */ |
| interface CellListResources extends CellList.Resources { |
| @Source({CellList.Style.DEFAULT_CSS, "MobileCellList.css"}) |
| CellListStyle cellListStyle(); |
| } |
| |
| /** |
| * Styles used by the mobile CellList. |
| */ |
| interface CellListStyle extends CellList.Style { |
| } |
| |
| /** |
| * The UiBinder interface. |
| */ |
| interface MobileTaskListViewUiBinder extends UiBinder<Widget, MobileTaskListView> { |
| } |
| |
| /** |
| * The UiBinder used to generate the view. |
| */ |
| private static MobileTaskListViewUiBinder uiBinder = GWT.create(MobileTaskListViewUiBinder.class); |
| |
| /** |
| * Displays the list of tasks. |
| */ |
| @UiField(provided = true) |
| CellList<TaskProxy> taskList; |
| |
| /** |
| * The presenter for this view. |
| */ |
| private Presenter presenter; |
| |
| /** |
| * Construct a new {@link MobileTaskListView}. |
| */ |
| public MobileTaskListView() { |
| |
| // Create the CellList. |
| CellListResources cellListRes = GWT.create(CellListResources.class); |
| taskList = new CellList<TaskProxy>(new TaskProxyCell(), cellListRes); |
| taskList.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED); |
| |
| /* |
| * Inform the presenter when the user selects a task from the task list. We |
| * use a NoSelectionModel because we don't want the task to remain selected, |
| * we just want to be notified of the selection event. |
| */ |
| final NoSelectionModel<TaskProxy> selectionModel = new NoSelectionModel<TaskProxy>(); |
| taskList.setSelectionModel(selectionModel); |
| selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() { |
| public void onSelectionChange(SelectionChangeEvent event) { |
| // Edit the task. |
| if (presenter != null) { |
| presenter.selectTask(selectionModel.getLastSelectedObject()); |
| } |
| } |
| }); |
| |
| // Initialize the widget. |
| initWidget(uiBinder.createAndBindUi(this)); |
| } |
| |
| 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 setTasks(List<TaskProxy> tasks) { |
| taskList.setRowData(tasks); |
| } |
| } |