package org.ovirt.engine.ui.common.widget.uicommon.vm;
import org.ovirt.engine.core.common.businessentities.storage.Disk;
import org.ovirt.engine.ui.common.CommonApplicationConstants;
import org.ovirt.engine.ui.common.gin.AssetProvider;
import org.ovirt.engine.ui.common.system.ClientStorage;
import org.ovirt.engine.ui.common.uicommon.model.SearchableTableModelProvider;
import org.ovirt.engine.ui.common.widget.table.column.AbstractColumn;
import org.ovirt.engine.ui.common.widget.table.column.AbstractDiskSizeColumn;
import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn;
import org.ovirt.engine.ui.common.widget.table.header.ImageResourceHeader;
import org.ovirt.engine.ui.common.widget.uicommon.AbstractModelBoundTableWidget;
import org.ovirt.engine.ui.common.widget.uicommon.disks.DisksViewColumns;
import org.ovirt.engine.ui.common.widget.uicommon.disks.DisksViewRadioGroup;
import org.ovirt.engine.ui.uicommonweb.models.vms.VmDiskListModelBase;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.user.client.ui.RadioButton;
public class BaseVmDiskListModelTable<T extends VmDiskListModelBase<?>> extends AbstractModelBoundTableWidget<Disk, T> {
private static final CommonApplicationConstants constants = AssetProvider.getConstants();
private DisksViewRadioGroup disksViewRadioGroup;
private static AbstractTextColumn<Disk> aliasColumn;
private static AbstractDiskSizeColumn sizeColumn;
private static AbstractDiskSizeColumn actualSizeColumn;
private static AbstractTextColumn<Disk> allocationColumn;
private static AbstractTextColumn<Disk> dateCreatedColumn;
private static AbstractColumn<Disk, Disk> statusColumn;
private static AbstractTextColumn<Disk> lunIdColumn;
private static AbstractTextColumn<Disk> lunSerialColumn;
private static AbstractTextColumn<Disk> lunVendorIdColumn;
private static AbstractTextColumn<Disk> lunProductIdColumn;
private static AbstractTextColumn<Disk> interfaceColumn;
private static AbstractTextColumn<Disk> diskStorageTypeColumn;
private static AbstractTextColumn<Disk> cinderVolumeTypeColumn;
private static AbstractTextColumn<Disk> descriptionColumn;
public BaseVmDiskListModelTable(
SearchableTableModelProvider<Disk, T> modelProvider,
EventBus eventBus,
ClientStorage clientStorage) {
super(modelProvider, eventBus, clientStorage, false);
disksViewRadioGroup = new DisksViewRadioGroup();
}
final ClickHandler clickHandler = event -> {
if (((RadioButton) event.getSource()).getValue()) {
handleRadioButtonClick(event);
}
};
void initTableOverhead() {
disksViewRadioGroup.setClickHandler(clickHandler);
disksViewRadioGroup.addStyleName("dvrg_radioGroup_pfly_fix"); //$NON-NLS-1$
getTable().setTableOverhead(disksViewRadioGroup);
getTable().setTableTopMargin(20);
}
@Override
public void initTable() {
initTableColumns();
initTableOverhead();
handleRadioButtonClick(null);
getModel().getItemsChangedEvent().addListener((ev, sender, args) -> disksViewRadioGroup.setDiskStorageType(getModel().getDiskViewType().getEntity()));
}
void handleRadioButtonClick(ClickEvent event) {
boolean all = disksViewRadioGroup.getAllButton().getValue();
boolean images = disksViewRadioGroup.getImagesButton().getValue();
boolean luns = disksViewRadioGroup.getLunsButton().getValue();
boolean cinder = disksViewRadioGroup.getCinderButton().getValue();
getTable().getSelectionModel().clear();
getModel().getDiskViewType().setEntity(disksViewRadioGroup.getDiskStorageType());
getModel().setItems(null);
getModel().search();
getTable().ensureColumnVisible(
DisksViewColumns.diskStatusColumn, constants.empty(), all || images || luns || cinder, "30px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
aliasColumn, constants.aliasDisk(), all || images || luns || cinder, "120px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
DisksViewColumns.bootableDiskColumn,
new ImageResourceHeader(DisksViewColumns.bootableDiskColumn.getDefaultImage(),
SafeHtmlUtils.fromSafeConstant(constants.bootableDisk())),
all || images || luns || cinder, "30px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
DisksViewColumns.shareableDiskColumn,
new ImageResourceHeader(DisksViewColumns.shareableDiskColumn.getDefaultImage(),
SafeHtmlUtils.fromSafeConstant(constants.shareable())),
all || images || luns || cinder, "30px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
DisksViewColumns.readOnlyDiskColumn,
new ImageResourceHeader(DisksViewColumns.readOnlyDiskColumn.getDefaultImage(),
SafeHtmlUtils.fromSafeConstant(constants.readOnly())),
all || images || luns || cinder, "30px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
sizeColumn, constants.provisionedSizeDisk(), all || images || luns || cinder, "110px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
actualSizeColumn, constants.sizeDisk(), images, "110px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
allocationColumn, constants.allocationDisk(), images, "125px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
DisksViewColumns.storageDomainsColumn, constants.storageDomainDisk(), images || cinder, "125px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
DisksViewColumns.storageTypeColumn, constants.storageTypeDisk(), images, "100px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
cinderVolumeTypeColumn, constants.cinderVolumeTypeDisk(), cinder, "80px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
dateCreatedColumn, constants.creationDateDisk(), images || cinder, "120px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
lunIdColumn, constants.lunIdSanStorage(), luns, "130px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
lunSerialColumn, constants.serialSanStorage(), luns, "130px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
lunVendorIdColumn, constants.vendorIdSanStorage(), luns, "130px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
lunProductIdColumn, constants.productIdSanStorage(), luns, "130px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
DisksViewColumns.diskContainersColumn, constants.attachedToDisk(), all || images || luns || cinder, "110px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
interfaceColumn, constants.interfaceDisk(), all || images || luns || cinder, "100px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
DisksViewColumns.diskAlignmentColumn, constants.diskAlignment(), all || images || luns, "100px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
statusColumn, constants.statusDisk(), images || cinder || all, "80px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
diskStorageTypeColumn, constants.typeDisk(), all, "80px"); //$NON-NLS-1$
getTable().ensureColumnVisible(
descriptionColumn, constants.descriptionDisk(), all || images || luns, "90px"); //$NON-NLS-1$
}
void initTableColumns() {
getTable().enableColumnResizing();
aliasColumn = DisksViewColumns.getAliasColumn(null);
sizeColumn = DisksViewColumns.getSizeColumn(null);
actualSizeColumn = DisksViewColumns.getActualSizeColumn(null);
allocationColumn = DisksViewColumns.getAllocationColumn(null);
dateCreatedColumn = DisksViewColumns.getDateCreatedColumn(null);
statusColumn = DisksViewColumns.getStatusColumn(null);
lunIdColumn = DisksViewColumns.getLunIdColumn(null);
lunSerialColumn = DisksViewColumns.getLunSerialColumn(null);
lunVendorIdColumn = DisksViewColumns.getLunVendorIdColumn(null);
lunProductIdColumn = DisksViewColumns.getLunProductIdColumn(null);
interfaceColumn = DisksViewColumns.getInterfaceColumn(null);
diskStorageTypeColumn = DisksViewColumns.getDiskStorageTypeColumn(null);
cinderVolumeTypeColumn = DisksViewColumns.getCinderVolumeTypeColumn(null);
descriptionColumn = DisksViewColumns.getDescriptionColumn(null);
}
}