package org.ovirt.engine.ui.webadmin.section.main.view; import org.ovirt.engine.core.common.businessentities.AuditLog; import org.ovirt.engine.ui.common.system.ClientStorage; import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; import org.ovirt.engine.ui.common.view.AbstractSubTabTableWidgetView; import org.ovirt.engine.ui.common.widget.action.CommandLocation; import org.ovirt.engine.ui.common.widget.uicommon.events.EventListModelTable; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.models.ListWithDetailsModel; import org.ovirt.engine.ui.uicommonweb.models.events.EventListModel; import org.ovirt.engine.ui.webadmin.ApplicationConstants; import org.ovirt.engine.ui.webadmin.gin.AssetProvider; import org.ovirt.engine.ui.webadmin.widget.action.WebAdminButtonDefinition; import com.google.gwt.event.shared.EventBus; /** * Base class for sub tab views used to show events using {@link EventListModelTable}. * * @param <I> * Main tab table row data type. * @param <M> * Main model type. * @param <D> * Detail model type. */ public abstract class AbstractSubTabEventView<I, M extends ListWithDetailsModel, D extends EventListModel> extends AbstractSubTabTableWidgetView<I, AuditLog, M, D> { private static final ApplicationConstants constants = AssetProvider.getConstants(); public AbstractSubTabEventView(SearchableDetailModelProvider<AuditLog, M, D> modelProvider, EventBus eventBus, ClientStorage clientStorage) { super(new EventListModelTable<>(modelProvider, eventBus, clientStorage)); generateIds(); initTable(); initWidget(getModelBoundTableWidget()); } @Override protected void initTable() { super.initTable(); getTable().addActionButton(new WebAdminButtonDefinition<AuditLog>(constants.details(), CommandLocation.OnlyFromContext) { @Override protected UICommand resolveCommand() { return getModelBoundTableWidget().getModel().getDetailsCommand(); } }); } protected abstract void generateIds(); }