/*
* Copyright (C) 2013 Red Hat, Inc. and/or its affiliates.
*
* 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 org.jboss.errai.demo.jpa.client.local;
import java.util.List;
import org.jboss.errai.demo.jpa.client.shared.Album;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.i18n.shared.DateTimeFormat;
import com.google.gwt.i18n.shared.DateTimeFormat.PredefinedFormat;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlexTable;
/**
* A tabular display of a list of albums, supporting delete and edit callbacks for each row.
*
* @author Jonathan Fuerth <jfuerth@gmail.com>
*/
public class AlbumTable extends FlexTable {
private RowOperationHandler<Album> deleteHandler;
private RowOperationHandler<Album> editHandler;
public AlbumTable() {
addStyleName("albumTable");
ColumnFormatter cf = getColumnFormatter();
cf.setStyleName(0, "albumName");
cf.setStyleName(1, "artistName");
cf.setStyleName(2, "format");
cf.setStyleName(3, "releaseDate");
cf.setStyleName(4, "deleteButton");
}
public void addAll(List<Album> entries) {
for (Album a : entries) {
add(a);
}
}
public void add(final Album a) {
Button editButton = new Button("Edit...");
editButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if (editHandler != null) {
editHandler.handle(a);
}
}
});
Button deleteButton = new Button("Delete");
deleteButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if (deleteHandler != null) {
deleteHandler.handle(a);
}
}
});
int row = getRowCount();
insertRow(row);
insertCells(row, 0, 5);
setText(row, 0, a.getName());
setText(row, 1, a.getArtist() == null ? "" : a.getArtist().getName());
setText(row, 2, a.getFormat() == null ? "" : a.getFormat().name());
setText(row, 3, a.getReleaseDate() == null ? "" :
DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT).format(a.getReleaseDate()));
setWidget(row, 5, editButton);
setWidget(row, 6, deleteButton);
}
public void setDeleteHandler(RowOperationHandler<Album> handler) {
deleteHandler = handler;
}
public void setEditHandler(RowOperationHandler<Album> handler) {
editHandler = handler;
}
}