package org.ovirt.engine.ui.common.widget.uicommon.storage;
import org.ovirt.engine.core.common.businessentities.storage.VolumeFormat;
import org.ovirt.engine.core.common.utils.SizeConverter;
import org.ovirt.engine.ui.common.CommonApplicationConstants;
import org.ovirt.engine.ui.common.editor.UiCommonEditorDriver;
import org.ovirt.engine.ui.common.gin.AssetProvider;
import org.ovirt.engine.ui.common.widget.form.FormItem;
import org.ovirt.engine.ui.common.widget.label.BooleanLabel;
import org.ovirt.engine.ui.common.widget.label.DiskSizeLabel;
import org.ovirt.engine.ui.common.widget.label.EnumTextBoxLabel;
import org.ovirt.engine.ui.common.widget.uicommon.AbstractModelBoundFormWidget;
import org.ovirt.engine.ui.uicommonweb.models.storage.ImageInfoModel;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiConstructor;
public class ImageInfoForm extends AbstractModelBoundFormWidget<ImageInfoModel> {
interface Driver extends UiCommonEditorDriver<ImageInfoModel, ImageInfoForm> {
}
private final Driver driver = GWT.create(Driver.class);
private static final CommonApplicationConstants constants = AssetProvider.getConstants();
private ImageInfoModel imageInfoModel;
EnumTextBoxLabel<VolumeFormat> format = new EnumTextBoxLabel<>();
DiskSizeLabel<Integer> actualSize = new DiskSizeLabel<>(SizeConverter.SizeUnit.GiB);
DiskSizeLabel<Integer> virtualSize = new DiskSizeLabel<>(SizeConverter.SizeUnit.GiB);
EnumTextBoxLabel<ImageInfoModel.QemuCompat> qcowCompat = new EnumTextBoxLabel<>();
BooleanLabel backingFile = new BooleanLabel(constants.yes(), constants.no());
@UiConstructor
public ImageInfoForm() {
super(null, 2, 3);
}
public void initialize(ImageInfoModel model) {
setModel(model);
driver.initialize(this);
formBuilder.addFormItem(new FormItem(constants.imageFormat(), format, 0, 0){
@Override
public boolean getIsAvailable() {
return getModel().getFileLoaded();
}
});
formBuilder.addFormItem(new FormItem(constants.imageActualSize(), actualSize, 1, 0){
@Override
public boolean getIsAvailable() {
return getModel().getFileLoaded();
}
});
formBuilder.addFormItem(new FormItem(constants.imageVirtualSize(), virtualSize, 2, 0) {
@Override
public boolean getIsAvailable() {
return getModel().getFormat() == VolumeFormat.COW;
}
});
formBuilder.addFormItem(new FormItem(constants.imageQcowCompat(), qcowCompat, 0, 1) {
@Override
public boolean getIsAvailable() {
return getModel().getFormat() == VolumeFormat.COW;
}
});
formBuilder.addFormItem(new FormItem(constants.imageBackingFile(), backingFile, 1, 1) {
@Override
public boolean getIsAvailable() {
return getModel().getFormat() == VolumeFormat.COW;
}
});
formBuilder.setRelativeColumnWidth(0, 5);
formBuilder.setRelativeColumnWidth(1, 5);
getModel().getEntityChangedEvent().addListener((ev, sender, args) -> update());
}
@Override
protected void doEdit(ImageInfoModel model) {
driver.edit(model);
}
@Override
public void cleanup() {
driver.cleanup();
}
@Override
protected ImageInfoModel getModel() {
return imageInfoModel;
}
public void setModel(ImageInfoModel imageInfoModel) {
this.imageInfoModel = imageInfoModel;
}
}