package org.ovirt.engine.ui.webadmin.section.main.view;
import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel;
import org.ovirt.engine.ui.webadmin.idhandler.WithElementId;
import org.ovirt.engine.ui.webadmin.uicommon.model.MainModelProvider;
import org.ovirt.engine.ui.webadmin.view.AbstractView;
import org.ovirt.engine.ui.webadmin.widget.table.SimpleActionTable;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.CellTable.Resources;
/**
* Base class for table-based main tab views.
*
* @param <T>
* Table row data type.
* @param <M>
* Main model type.
*/
public abstract class AbstractMainTabTableView<T, M extends SearchableListModel> extends AbstractView {
private final MainModelProvider<T, M> modelProvider;
@WithElementId
public final SimpleActionTable<T> table;
public AbstractMainTabTableView(MainModelProvider<T, M> modelProvider) {
this.modelProvider = modelProvider;
this.table = new SimpleActionTable<T>(modelProvider, getTableHeaderlessResources(), getTableResources());
this.table.showRefreshButton();
this.table.showPagingButtons();
}
protected Resources getTableHeaderlessResources() {
return (Resources) GWT.create(MainTableHeaderlessResources.class);
}
protected Resources getTableResources() {
return (Resources) GWT.create(MainTableResources.class);
}
protected M getMainModel() {
return modelProvider.getModel();
}
protected SimpleActionTable<T> getTable() {
return table;
}
public interface MainTableHeaderlessResources extends CellTable.Resources {
interface TableStyle extends CellTable.Style {
}
@Override
@Source({ CellTable.Style.DEFAULT_CSS, "org/ovirt/engine/ui/webadmin/css/TabCellTableHeaderless.css" })
TableStyle cellTableStyle();
}
public interface MainTableResources extends CellTable.Resources {
interface TableStyle extends CellTable.Style {
}
@Override
@Source({ CellTable.Style.DEFAULT_CSS, "org/ovirt/engine/ui/webadmin/css/TabCellTable.css" })
TableStyle cellTableStyle();
}
}