package org.ovirt.engine.ui.common.widget.uicommon.vm;
import org.ovirt.engine.core.common.businessentities.VM;
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.HasCellClickHandlers;
import org.ovirt.engine.ui.common.widget.table.column.AbstractCheckboxColumn;
import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn;
import org.ovirt.engine.ui.common.widget.table.column.VmDeviceGeneralTypeColumn;
import org.ovirt.engine.ui.common.widget.uicommon.AbstractModelBoundTableWidget;
import org.ovirt.engine.ui.uicommonweb.models.vms.VmDeviceFeEntity;
import org.ovirt.engine.ui.uicommonweb.models.vms.VmDevicesListModel;
import com.google.gwt.event.shared.EventBus;
public class VmDevicesListModelTable extends AbstractModelBoundTableWidget<VmDeviceFeEntity, VmDevicesListModel<VM>> {
private static final CommonApplicationConstants constants = AssetProvider.getConstants();
private HotUnplugColumn hotUnplugColumn;
public VmDevicesListModelTable(
SearchableTableModelProvider<VmDeviceFeEntity, VmDevicesListModel<VM>> modelProvider,
EventBus eventBus, ClientStorage clientStorage) {
super(modelProvider, eventBus, clientStorage, false);
}
@Override
public void initTable() {
getTable().enableColumnResizing();
addGeneralTypeColumn();
addDeviceTypeColumn();
addAddressColumn();
addReadOnlyColumn();
addPluggedColumn();
addManagedColumn();
addSpecParamsColumn();
addHotUnplugColumn();
}
private void addGeneralTypeColumn() {
final VmDeviceGeneralTypeColumn<VmDeviceFeEntity> deviceGeneralTypeColumn = new VmDeviceGeneralTypeColumn<>();
deviceGeneralTypeColumn.setContextMenuTitle(constants.deviceGeneralType());
deviceGeneralTypeColumn.makeSortable();
getTable().addColumn(deviceGeneralTypeColumn, constants.empty(), "30px"); //$NON-NLS-1$
}
private void addDeviceTypeColumn() {
final AbstractTextColumn<VmDeviceFeEntity> deviceTypeColumn = new AbstractTextColumn<VmDeviceFeEntity>() {
@Override
public String getValue(VmDeviceFeEntity deviceEntity) {
return deviceEntity.getVmDevice().getDevice();
}
};
deviceTypeColumn.makeSortable();
getTable().addColumn(deviceTypeColumn, constants.deviceType(), "70px"); //$NON-NLS-1$
}
private void addAddressColumn() {
final AbstractTextColumn<VmDeviceFeEntity> deviceAddressColumn = new AbstractTextColumn<VmDeviceFeEntity>() {
@Override
public String getValue(VmDeviceFeEntity deviceEntity) {
return deviceEntity.getVmDevice().getAddress();
}
};
deviceAddressColumn.makeSortable();
getTable().addColumn(deviceAddressColumn, constants.deviceAddress(), "395px"); //$NON-NLS-1$
}
private void addReadOnlyColumn() {
final AbstractCheckboxColumn<VmDeviceFeEntity> readonlyColumn = new AbstractCheckboxColumn<VmDeviceFeEntity>() {
@Override
public Boolean getValue(VmDeviceFeEntity object) {
return object.getVmDevice().getReadOnly();
}
@Override
protected boolean canEdit(VmDeviceFeEntity object) {
return false;
}
};
readonlyColumn.makeSortable();
getTable().addColumn(readonlyColumn, constants.deviceReadOnlyAlias(), "70px"); //$NON-NLS-1$
}
private void addPluggedColumn() {
final AbstractCheckboxColumn<VmDeviceFeEntity> pluggedColumn = new AbstractCheckboxColumn<VmDeviceFeEntity>() {
@Override
public Boolean getValue(VmDeviceFeEntity object) {
return object.getVmDevice().isPlugged();
}
@Override
protected boolean canEdit(VmDeviceFeEntity object) {
return false;
}
};
pluggedColumn.makeSortable();
getTable().addColumn(pluggedColumn, constants.devicePluggedAlias(), "70px"); //$NON-NLS-1$
}
private void addManagedColumn() {
final AbstractCheckboxColumn<VmDeviceFeEntity> managedColumn = new AbstractCheckboxColumn<VmDeviceFeEntity>() {
@Override
public Boolean getValue(VmDeviceFeEntity object) {
return object.getVmDevice().isManaged();
}
@Override
protected boolean canEdit(VmDeviceFeEntity object) {
return false;
}
};
managedColumn.makeSortable();
getTable().addColumn(managedColumn, constants.deviceManagedAlias(), "70px"); //$NON-NLS-1$
}
private void addSpecParamsColumn() {
final AbstractTextColumn<VmDeviceFeEntity> specParamsColumn = new AbstractTextColumn<VmDeviceFeEntity>() {
@Override
public String getValue(VmDeviceFeEntity deviceEntity) {
return deviceEntity.getVmDevice().getSpecParams().toString();
}
};
specParamsColumn.makeSortable();
getTable().addColumn(specParamsColumn , constants.deviceSpecParamsAlias(), "300px"); //$NON-NLS-1$
}
private void addHotUnplugColumn() {
hotUnplugColumn = new HotUnplugColumn();
getTable().addColumn(hotUnplugColumn , constants.hotUnplug(), "98px"); //$NON-NLS-1$
}
public HasCellClickHandlers<VmDeviceFeEntity> getHotUnplugColumn() {
return hotUnplugColumn;
}
}