/*******************************************************************************
* Copyright (c) 2012 Kai Toedter and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html.
*
* Contributors:
* Kai Toedter - initial API and implementation
******************************************************************************/
package com.toedter.gwt.demo.contacts.client.ui;
import java.util.List;
import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
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.IsWidget;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SingleSelectionModel;
import com.toedter.gwt.demo.contacts.shared.Contact;
class ContactCell extends AbstractCell<Contact> {
@Override
public void render(Context context, Contact value, SafeHtmlBuilder sb) {
if (value != null) {
sb.appendEscaped(value.getFirstName() + " " + value.getLastName());
}
}
}
public class ContactListView3 extends Composite implements IContactListView {
private final CellList<Contact> cellList;
private Presenter presenter;
public ContactListView3() {
ContactCell contactCell = new ContactCell();
cellList = new CellList<Contact>(contactCell);
cellList.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
// Add a selection model to handle user selection.
final SingleSelectionModel<Contact> selectionModel = new SingleSelectionModel<Contact>();
cellList.setSelectionModel(selectionModel);
selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@Override
public void onSelectionChange(SelectionChangeEvent event) {
Contact selectedContact = selectionModel.getSelectedObject();
System.out.println("ContactListView2 .onSelectionChange()");
presenter.select(selectedContact);
}
});
initWidget(cellList);
}
@Override
public void setWidget(IsWidget w) {
// TODO Auto-generated method stub
}
@Override
public void setPresenter(Presenter presenter) {
this.presenter = presenter;
}
@Override
public void selectInitialRow(int i) {
// not used, use setInitialContact instead
}
@Override
public void initialize(List<Contact> contacts) {
cellList.setRowCount(contacts.size(), true);
cellList.setRowData(0, contacts);
}
@Override
public void selectInitialContact(Contact contact) {
cellList.getSelectionModel().setSelected(contact, true);
}
}