package org.ovirt.engine.ui.common.view;
import org.ovirt.engine.ui.common.idhandler.WithElementId;
import org.ovirt.engine.ui.common.presenter.AbstractSubTabPresenter;
import org.ovirt.engine.ui.common.widget.table.SimpleActionTable;
import org.ovirt.engine.ui.common.widget.uicommon.AbstractModelBoundTableWidget;
import org.ovirt.engine.ui.uicommonweb.models.ListWithDetailsModel;
import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel;
/**
* Base class for sub tab views that use {@linkplain AbstractModelBoundTableWidget model-bound table widgets}.
*
* @param <I>
* Main tab table row data type.
* @param <T>
* Sub tab table row data type.
* @param <M>
* Main model type.
* @param <D>
* Detail model type.
*/
public class AbstractSubTabTableWidgetView<I, T, M extends ListWithDetailsModel, D extends SearchableListModel> extends AbstractView implements AbstractSubTabPresenter.ViewDef<I> {
private final AbstractModelBoundTableWidget<T, D> modelBoundTableWidget;
@WithElementId
public final SimpleActionTable<T> table;
public AbstractSubTabTableWidgetView(AbstractModelBoundTableWidget<T, D> modelBoundTableWidget) {
this.modelBoundTableWidget = modelBoundTableWidget;
this.table = modelBoundTableWidget.getTable();
}
protected AbstractModelBoundTableWidget<T, D> getModelBoundTableWidget() {
return modelBoundTableWidget;
}
@Override
public SimpleActionTable<T> getTable() {
return modelBoundTableWidget.getTable();
}
protected void initTable() {
getModelBoundTableWidget().initTable();
}
@Override
public void setMainTabSelectedItem(I selectedItem) {
// No-op since table-based sub tab views don't handle main tab selection on their own
}
}