package org.ovirt.engine.ui.webadmin.widget.editor;
import java.util.ArrayList;
import org.ovirt.engine.core.compat.Event;
import org.ovirt.engine.core.compat.EventArgs;
import org.ovirt.engine.core.compat.IEventListener;
import org.ovirt.engine.ui.uicommonweb.models.ListModel;
import org.ovirt.engine.ui.webadmin.widget.HasEditorDriver;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
import com.google.gwt.view.client.SingleSelectionModel;
public class IVdcQueryableCellTable<IVdcQueryable, M extends ListModel> extends CellTable<IVdcQueryable> implements HasEditorDriver<M> {
private static final int DEFAULT_PAGESIZE = 1000;
private M listModel;
public IVdcQueryableCellTable() {
super(DEFAULT_PAGESIZE, (Resources) GWT.create(IVdcQueryableCellTableResources.class));
SingleSelectionModel<IVdcQueryable> selectionModel = new SingleSelectionModel<IVdcQueryable>();
setSelectionModel(selectionModel);
getSelectionModel().addSelectionChangeHandler(new Handler() {
@Override
public void onSelectionChange(SelectionChangeEvent event) {
listModel.setSelectedItem(((SingleSelectionModel) getSelectionModel()).getSelectedObject());
}
});
}
@Override
public void addColumn(Column<IVdcQueryable, ?> column, String headerText, String width) {
addColumn(column, headerText);
setColumnWidth(column, width);
}
public void addColumnAt(Column<IVdcQueryable, ?> column, String headerText, String width, int position) {
insertColumn(position, column, headerText);
setColumnWidth(column, width);
}
@Override
public void edit(M object) {
this.listModel = object;
if (listModel.getItems() != null) {
if (listModel.getItems() != null) {
setRowData((ArrayList<IVdcQueryable>) listModel.getItems());
}
else {
setRowData(new ArrayList<IVdcQueryable>());
}
}
listModel.getItemsChangedEvent().addListener(new IEventListener() {
@Override
public void eventRaised(Event ev, Object sender, EventArgs args) {
if (listModel.getItems() != null) {
setRowData((ArrayList<IVdcQueryable>) listModel.getItems());
}
else {
setRowData(new ArrayList<IVdcQueryable>());
}
}
});
listModel.getSelectedItemChangedEvent().addListener(new IEventListener() {
@Override
public void eventRaised(Event ev, Object sender, EventArgs args) {
}
});
}
@Override
public M flush() {
return listModel;
}
public interface IVdcQueryableCellTableResources extends CellTable.Resources {
interface TableStyle extends CellTable.Style {
}
@Override
@Source({ CellTable.Style.DEFAULT_CSS, "org/ovirt/engine/ui/webadmin/css/PopupCellTable.css" })
TableStyle cellTableStyle();
}
}