package org.ovirt.engine.ui.webadmin.section.main.view.popup.storage.backup; import org.ovirt.engine.core.common.businessentities.OriginType; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.compat.StringFormat; import org.ovirt.engine.ui.common.uicommon.model.DetailModelProvider; import org.ovirt.engine.ui.common.widget.editor.ListModelObjectCellTable; import org.ovirt.engine.ui.common.widget.table.column.AbstractCheckboxColumn; import org.ovirt.engine.ui.common.widget.table.column.AbstractEnumColumn; import org.ovirt.engine.ui.common.widget.table.column.AbstractImageResourceColumn; import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn; import org.ovirt.engine.ui.uicommonweb.models.templates.TemplateGeneralModel; import org.ovirt.engine.ui.uicommonweb.models.templates.TemplateListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.ImportTemplateData; import org.ovirt.engine.ui.webadmin.ApplicationConstants; import org.ovirt.engine.ui.webadmin.ApplicationMessages; import org.ovirt.engine.ui.webadmin.ApplicationResources; import org.ovirt.engine.ui.webadmin.gin.AssetProvider; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.storage.backup.ImportTemplatePopupPresenterWidget; import com.google.gwt.dom.client.Style.Position; import com.google.gwt.event.shared.EventBus; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.user.client.ui.ScrollPanel; import com.google.inject.Inject; public class ImportTemplatePopupView extends ImportVmFromExportDomainPopupView implements ImportTemplatePopupPresenterWidget.ViewDef { private ImportTemplateGeneralSubTabView generalView; private static final ApplicationResources resources = AssetProvider.getResources(); private static final ApplicationConstants constants = AssetProvider.getConstants(); private static final ApplicationMessages messages = AssetProvider.getMessages(); @Inject public ImportTemplatePopupView(EventBus eventBus) { super(eventBus); } @Override protected void initMainTable() { this.table = new ListModelObjectCellTable<>(); AbstractCheckboxColumn<Object> cloneTemplateColumn = new AbstractCheckboxColumn<Object>((index, model, value) -> { ((ImportTemplateData) model).getClone().setEntity(value); table.asEditor().edit(importModel); }) { @Override public Boolean getValue(Object model) { return ((ImportTemplateData) model).getClone().getEntity(); } @Override protected boolean canEdit(Object model) { return ((ImportTemplateData) model).getClone().getIsChangable(); } }; table.addColumn(cloneTemplateColumn, constants.cloneVM(), "50px"); //$NON-NLS-1$ AbstractTextColumn<Object> nameColumn = new AbstractTextColumn<Object>() { @Override public String getValue(Object object) { return ((ImportTemplateData) object).getTemplate().getName(); } }; table.addColumn(nameColumn, constants.nameTemplate(), "150px"); //$NON-NLS-1$ AbstractTextColumn<Object> versionNameColumn = new AbstractTextColumn<Object>() { @Override public String getValue(Object object) { VmTemplate template = ((ImportTemplateData) object).getTemplate(); if (template.isBaseTemplate()) { return ""; //$NON-NLS-1$ } return StringFormat.format("%s (%s)", //$NON-NLS-1$ template.getTemplateVersionName() != null ? template.getTemplateVersionName() : "", //$NON-NLS-1$ template.getTemplateVersionNumber()); } }; table.addColumn(versionNameColumn, constants.versionTemplate(), "150px"); //$NON-NLS-1$ AbstractTextColumn<Object> originColumn = new AbstractEnumColumn<Object, OriginType>() { @Override protected OriginType getRawValue(Object object) { return ((ImportTemplateData) object).getTemplate().getOrigin(); } }; table.addColumn(originColumn, constants.originTemplate(), "100px"); //$NON-NLS-1$ AbstractTextColumn<Object> memoryColumn = new AbstractTextColumn<Object>() { @Override public String getValue(Object object) { return messages.megabytes(String.valueOf(((ImportTemplateData) object).getTemplate().getMemSizeMb())); } }; table.addColumn(memoryColumn, constants.memoryTemplate(), "100px"); //$NON-NLS-1$ AbstractTextColumn<Object> cpuColumn = new AbstractTextColumn<Object>() { @Override public String getValue(Object object) { return String.valueOf(((ImportTemplateData) object).getTemplate().getNumOfCpus()); } }; table.addColumn(cpuColumn, constants.cpusTemplate(), "50px"); //$NON-NLS-1$ AbstractTextColumn<Object> archColumn = new AbstractTextColumn<Object>() { @Override public String getValue(Object object) { return String.valueOf(((ImportTemplateData) object).getTemplate().getClusterArch()); } }; table.addColumn(archColumn, constants.architectureTemplate(), "50px"); //$NON-NLS-1$ AbstractTextColumn<Object> diskColumn = new AbstractTextColumn<Object>() { @Override public String getValue(Object object) { return String.valueOf(((ImportTemplateData) object).getTemplate().getDiskList().size()); } }; table.addColumn(diskColumn, constants.disksTemplate(), "50px"); //$NON-NLS-1$ isObjectInSystemColumn = new AbstractImageResourceColumn<Object>() { @Override public ImageResource getValue(Object object) { return ((ImportTemplateData) object).isExistsInSystem() ? resources.logNormalImage() : null; } }; table.addColumn(isObjectInSystemColumn, constants.templateInSetup(), "60px"); //$NON-NLS-1$ ScrollPanel sp = new ScrollPanel(); sp.add(table); splitLayoutPanel.add(sp); table.getElement().getStyle().setPosition(Position.RELATIVE); } @Override protected void initGeneralSubTabView() { ScrollPanel generalPanel = new ScrollPanel(); DetailModelProvider<TemplateListModel, TemplateGeneralModel> modelProvider = new DetailModelProvider<TemplateListModel, TemplateGeneralModel>() { @Override public TemplateGeneralModel getModel() { return (TemplateGeneralModel) importModel.getDetailModels().get(0); } @Override public void onSubTabSelected() { } @Override public void onSubTabDeselected() { } }; generalView = new ImportTemplateGeneralSubTabView(modelProvider); generalPanel.add(generalView); subTabLayoutPanel.add(generalPanel, constants.generalImpTempTab()); } @Override protected void setGeneralViewSelection(Object selectedItem) { generalView.setMainTabSelectedItem((VmTemplate) selectedItem); } @Override protected void addAllocationColumn() { } @Override protected void initAppTable() { } }