package org.ovirt.engine.ui.webadmin.widget.storage; import java.util.ArrayList; import org.ovirt.engine.core.common.businessentities.BusinessEntity; import org.ovirt.engine.core.common.businessentities.Quota; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.businessentities.storage.DiskImage; import org.ovirt.engine.core.common.utils.SizeConverter; import org.ovirt.engine.ui.common.widget.label.DiskSizeLabel; import org.ovirt.engine.ui.common.widget.label.StringValueLabel; import org.ovirt.engine.ui.common.widget.tree.AbstractSubTabTree; import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel; import org.ovirt.engine.ui.webadmin.ApplicationResources; import org.ovirt.engine.ui.webadmin.gin.AssetProvider; import org.ovirt.engine.ui.webadmin.widget.label.FullDateTimeLabel; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.TreeItem; public class TemplatesTree<M extends SearchableListModel> extends AbstractSubTabTree<M, VmTemplate, DiskImage> { private static final ApplicationResources resources = AssetProvider.getResources(); public TemplatesTree() { super(); } @Override protected TreeItem getRootItem(VmTemplate template) { HorizontalPanel panel = new HorizontalPanel(); panel.setSpacing(1); panel.setWidth("100%"); //$NON-NLS-1$ addItemToPanel(panel, new Image(resources.vmImage()), "25px"); //$NON-NLS-1$ addTextBoxToPanel(panel, new StringValueLabel(), template.getName(), ""); //$NON-NLS-1$ addValueLabelToPanel(panel, new DiskSizeLabel<Integer>(), template.getDiskTemplateMap().size(), "110px"); //$NON-NLS-1$ addValueLabelToPanel(panel, new DiskSizeLabel<Double>(), template.getActualDiskSize(), "110px"); //$NON-NLS-1$ addValueLabelToPanel(panel, new FullDateTimeLabel(), template.getCreationDate(), "140px"); //$NON-NLS-1$ TreeItem treeItem = new TreeItem(panel); treeItem.setUserObject(template.getId()); return treeItem; } @Override protected TreeItem getNodeItem(DiskImage disk) { HorizontalPanel panel = new HorizontalPanel(); panel.setSpacing(1); panel.setWidth("100%"); //$NON-NLS-1$ addItemToPanel(panel, new Image(resources.diskImage()), "25px"); //$NON-NLS-1$ addTextBoxToPanel(panel, new StringValueLabel(), disk.getDiskAlias(), ""); //$NON-NLS-1$ addTextBoxToPanel(panel, new StringValueLabel(), "", "110px"); //$NON-NLS-1$ //$NON-NLS-2$ addValueLabelToPanel(panel, new DiskSizeLabel<Long>(SizeConverter.SizeUnit.BYTES), disk.getSize(), "110px"); //$NON-NLS-1$ addValueLabelToPanel(panel, new DiskSizeLabel<Double>(), disk.getActualSize(), "110px"); //$NON-NLS-1$ addValueLabelToPanel(panel, new FullDateTimeLabel(), disk.getCreationDate(), "140px"); //$NON-NLS-1$ TreeItem treeItem = new TreeItem(panel); treeItem.setUserObject(disk.getImageId()); return treeItem; } @Override protected ArrayList<DiskImage> getNodeObjects(VmTemplate template) { return new ArrayList<>(template.getDiskImageMap().values()); } @Override protected boolean getIsNodeEnabled(DiskImage disk) { if (listModel.getEntity() == null) { return true; } if (listModel.getEntity() instanceof Quota) { return ((BusinessEntity) listModel.getEntity()).getId().equals(disk.getQuotaId()); } return disk.getStorageIds().contains(((StorageDomain) listModel.getEntity()).getId()); } }