package org.ovirt.engine.ui.webadmin.section.main.view.tab; import org.ovirt.engine.core.common.businessentities.ErrataCounts; import org.ovirt.engine.core.common.businessentities.Erratum.ErrataSeverity; import org.ovirt.engine.core.common.businessentities.Erratum.ErrataType; import org.ovirt.engine.core.common.businessentities.HasErrata; import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; import org.ovirt.engine.ui.common.presenter.AbstractSubTabPresenter; import org.ovirt.engine.ui.common.uicommon.model.DetailTabModelProvider; import org.ovirt.engine.ui.common.view.AbstractSubTabFormView; import org.ovirt.engine.ui.common.widget.AbstractUiCommandButton; import org.ovirt.engine.ui.common.widget.UiCommandLink; import org.ovirt.engine.ui.common.widget.form.FormBuilder; import org.ovirt.engine.ui.common.widget.form.FormItem; import org.ovirt.engine.ui.common.widget.form.GeneralFormPanel; 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.AbstractErrataCountModel; import org.ovirt.engine.ui.uicommonweb.models.ListWithDetailsModel; import org.ovirt.engine.ui.webadmin.ApplicationConstants; import org.ovirt.engine.ui.webadmin.gin.AssetProvider; import com.google.gwt.core.client.GWT; import com.google.gwt.editor.client.Editor; 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.Image; import com.google.gwt.user.client.ui.Widget; import com.google.inject.Inject; public abstract class AbstractSubTabErrataCountView<I extends HasErrata, M extends ListWithDetailsModel, C extends AbstractErrataCountModel> extends AbstractSubTabFormView<I, M, C> implements Editor<AbstractErrataCountModel>, AbstractSubTabPresenter.ViewDef<I> { interface ViewUiBinder extends UiBinder<Widget, AbstractSubTabErrataCountView<?, ?, ?>> { ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class); } interface ViewIdHandler extends ElementIdHandler<AbstractSubTabErrataCountView<?, ?, ?>> { ViewIdHandler idHandler = GWT.create(ViewIdHandler.class); } private static final ApplicationConstants constants = AssetProvider.getConstants(); @UiField(provided = true) GeneralFormPanel formPanel; @Ignore UiCommandLink totalSecurity; @Ignore UiCommandLink totalBugFix; @Ignore UiCommandLink totalEnhancement; FormBuilder formBuilder; @UiField Image progressDotsImage; @UiField @Ignore AlertPanel errorMessagePanel; @Inject public AbstractSubTabErrataCountView(DetailTabModelProvider<M, C> modelProvider) { super(modelProvider); // Init form panel formPanel = new GeneralFormPanel(); initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); errorMessagePanel.setType(Type.WARNING); showProgress(); // at this point, only the loading image is visible. // Build a form using the FormBuilder formBuilder = new FormBuilder(formPanel, 1, 3); formBuilder.setRelativeColumnWidth(0, 3); totalSecurity = new UiCommandLink(); totalBugFix = new UiCommandLink(); totalEnhancement = new UiCommandLink(); formBuilder.addFormItem(new FormItem(constants.totalSecurity(), totalSecurity, 0, 0)); formBuilder.addFormItem(new FormItem(constants.totalBugFix(), totalBugFix, 1, 0)); formBuilder.addFormItem(new FormItem(constants.totalEnhancement(), totalEnhancement, 2, 0)); } public void showProgress() { progressDotsImage.setVisible(true); errorMessagePanel.setVisible(false); formPanel.setVisible(false); } @Override protected void generateIds() { ViewIdHandler.idHandler.generateAndSetIds(this); } @Override public void setMainTabSelectedItem(I selectedItem) { formBuilder.update(getDetailModel()); } public void clearErrorMessage() { errorMessagePanel.clearMessages(); errorMessagePanel.setVisible(false); } public void showErrorMessage(SafeHtml message) { formPanel.setVisible(false); progressDotsImage.setVisible(false); errorMessagePanel.clearMessages(); errorMessagePanel.setVisible(true); errorMessagePanel.addMessage(message); } public void showCounts(ErrataCounts errataCounts) { clearErrorMessage(); progressDotsImage.setVisible(false); getTotalSecurity().setLabel(buildSecurityString(errataCounts)); getTotalBugFix().setLabel(String.valueOf(errataCounts.getCountByType(ErrataType.BUGFIX))); getTotalEnhancement().setLabel(String.valueOf( errataCounts.getCountByType(ErrataType.ENHANCEMENT))); formPanel.setVisible(true); } public AbstractUiCommandButton getTotalSecurity() { return totalSecurity; } public AbstractUiCommandButton getTotalBugFix() { return totalBugFix; } public AbstractUiCommandButton getTotalEnhancement() { return totalEnhancement; } private String buildSecurityString(ErrataCounts counts) { StringBuilder builder = new StringBuilder(); builder.append(String.valueOf(counts.getCountByType(ErrataType.SECURITY))); builder.append(" ("); //$NON-NLS-1$ builder.append(String.valueOf(counts.getCountByTypeAndSeverity(ErrataType.SECURITY, ErrataSeverity.CRITICAL))); builder.append(" "); //$NON-NLS-1$ builder.append(constants.critical()); builder.append(", "); //$NON-NLS-1$ builder.append(String.valueOf(counts.getCountByTypeAndSeverity(ErrataType.SECURITY, ErrataSeverity.IMPORTANT))); builder.append(" "); //$NON-NLS-1$ builder.append(constants.important()); builder.append(")"); //$NON-NLS-1$ return builder.toString(); } }