package org.ovirt.engine.ui.webadmin.uicommon.model; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.ListWithDetailsModel; import org.ovirt.engine.ui.webadmin.gin.ClientGinjector; /** * Default {@link DetailModelProvider} implementation for use with tab controls. * * @param <M> * Main model type. * @param <D> * Detail model type. */ public class DetailTabModelProvider<M extends ListWithDetailsModel, D extends EntityModel> extends TabModelProvider<D> implements DetailModelProvider<M, D> { private final Class<M> mainModelClass; private final Class<D> detailModelClass; public DetailTabModelProvider(ClientGinjector ginjector, Class<M> mainModelClass, Class<D> detailModelClass) { super(ginjector); this.mainModelClass = mainModelClass; this.detailModelClass = detailModelClass; } @Override public D getModel() { return UiCommonModelResolver.getDetailListModel(getCommonModel(), mainModelClass, detailModelClass); } protected M getMainModel() { return UiCommonModelResolver.getMainListModel(getCommonModel(), mainModelClass); } @Override public void onSubTabSelected() { getMainModel().setActiveDetailModel(getModel()); } }