package org.ovirt.engine.ui.webadmin.section.main.view.tab; import org.ovirt.engine.core.common.businessentities.Erratum; import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; import org.ovirt.engine.ui.common.uicommon.model.MainModelProvider; import org.ovirt.engine.ui.common.widget.panel.AlertPanel; import org.ovirt.engine.ui.common.widget.panel.AlertPanel.Type; import org.ovirt.engine.ui.uicommonweb.models.EngineErrataListModel; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.MainTabEngineErrataPresenter; import org.ovirt.engine.ui.webadmin.section.main.view.AbstractMainTabTableView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.ErrataTableView; import org.ovirt.engine.ui.webadmin.widget.errata.ErrataFilterPanel; import com.google.gwt.core.client.GWT; import com.google.gwt.resources.client.CssResource; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; import com.google.inject.Inject; /** * View for the main tab that contains errata (singular: Erratum) for the engine itself. * <p> * It is a little different from a typical main tab view -- it supports an AlertPanel for setting * a message upon failing to retrieve the errata. (Errata query results rely on integration with a * Katello provider, and if the provider has an issue, we want to notify the user right in the tab body. */ public class MainTabEngineErrataView extends AbstractMainTabTableView<Erratum, EngineErrataListModel> implements MainTabEngineErrataPresenter.ViewDef { interface ViewIdHandler extends ElementIdHandler<MainTabEngineErrataView> { ViewIdHandler idHandler = GWT.create(ViewIdHandler.class); } interface MainTabEngineErrataViewUiBinder extends UiBinder<Widget, MainTabEngineErrataView> { } interface Style extends CssResource { String filterPanel(); } @UiField public FlowPanel tablePanel; @UiField AlertPanel errorMessagePanel; @UiField Style style; protected ErrataFilterPanel errataFilterPanel; private static MainTabEngineErrataViewUiBinder uiBinder = GWT.create(MainTabEngineErrataViewUiBinder.class); @Inject public MainTabEngineErrataView(MainModelProvider<Erratum, EngineErrataListModel> modelProvider) { super(modelProvider); ViewIdHandler.idHandler.generateAndSetIds(this); // configure the table columns -- share config with ErrataTableView ErrataTableView.initErrataGrid(getTable()); initWidget(uiBinder.createAndBindUi(this)); errorMessagePanel.setVisible(false); errorMessagePanel.setType(Type.WARNING); initFilterPanel(); getTable().setTableOverhead(errataFilterPanel); getTable().enableColumnResizing(); tablePanel.add(getTable()); ViewIdHandler.idHandler.generateAndSetIds(this); } private void initFilterPanel() { errataFilterPanel = new ErrataFilterPanel(); errataFilterPanel.init(true, true, true); errataFilterPanel.addStyleName(style.filterPanel()); } public void clearErrorMessage() { errorMessagePanel.clearMessages(); errorMessagePanel.setVisible(false); tablePanel.setVisible(true); } @Override public void showErrorMessage(SafeHtml message) { tablePanel.setVisible(false); errorMessagePanel.clearMessages(); errorMessagePanel.setVisible(true); errorMessagePanel.addMessage(message); } public ErrataFilterPanel getErrataFilterPanel() { return errataFilterPanel; } }