package org.ovirt.engine.ui.common.widget.uicommon.vm;
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.uicommon.model.ModelProvider;
import org.ovirt.engine.ui.common.widget.editor.ListModelListBox;
import org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextBoxOnlyEditor;
import org.ovirt.engine.ui.common.widget.form.FormItem;
import org.ovirt.engine.ui.common.widget.label.StringValueLabel;
import org.ovirt.engine.ui.common.widget.tooltip.WidgetTooltip;
import org.ovirt.engine.ui.common.widget.uicommon.AbstractModelBoundFormWidget;
import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
import org.ovirt.engine.ui.uicommonweb.models.vms.ImportSource;
import org.ovirt.engine.ui.uicommonweb.models.vms.VmImportGeneralModel;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.text.shared.AbstractRenderer;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.IsWidget;
public class VmImportGeneralModelForm extends AbstractModelBoundFormWidget<VmImportGeneralModel> {
interface Driver extends UiCommonEditorDriver<VmImportGeneralModel, VmImportGeneralModelForm> {
}
@Path("name.entity")
StringEntityModelTextBoxOnlyEditor name = new StringEntityModelTextBoxOnlyEditor();
StringValueLabel description = new StringValueLabel();
@UiField(provided = true)
@Path("operatingSystems.selectedItem")
ListModelListBox<Integer> operatingSystems;
@Path("OS")
StringValueLabel os = new StringValueLabel();
StringValueLabel template = new StringValueLabel();
StringValueLabel definedMemory = new StringValueLabel();
StringValueLabel defaultDisplayType = new StringValueLabel();
StringValueLabel priority = new StringValueLabel();
StringValueLabel minAllocatedMemory = new StringValueLabel();
StringValueLabel guestFreeCachedBufferedMemInfo = new StringValueLabel();
StringValueLabel usbPolicy = new StringValueLabel();
StringValueLabel defaultHost = new StringValueLabel();
StringValueLabel customProperties = new StringValueLabel();
StringValueLabel domain = new StringValueLabel();
StringValueLabel compatibilityVersion = new StringValueLabel();
StringValueLabel vmId = new StringValueLabel();
StringValueLabel fqdn = new StringValueLabel();
StringValueLabel cpuInfo = new StringValueLabel();
StringValueLabel guestCpuCount = new StringValueLabel();
StringValueLabel quotaName = new StringValueLabel();
StringValueLabel origin = new StringValueLabel();
@Ignore
StringValueLabel monitorCount = new StringValueLabel();
private static final CommonApplicationConstants constants = AssetProvider.getConstants();
private final Driver driver = GWT.create(Driver.class);
public VmImportGeneralModelForm(ModelProvider<VmImportGeneralModel> modelProvider) {
super(modelProvider, 3, 7);
operatingSystems = new ListModelListBox<>(new AbstractRenderer<Integer>() {
@Override
public String render(Integer object) {
return AsyncDataProvider.getInstance().getOsName(object);
}
});
}
@Override
protected void doEdit(VmImportGeneralModel model) {
driver.edit(model);
// Required because of type conversion
monitorCount.setValue(Integer.toString(getModel().getMonitorCount()));
}
@Override
public void cleanup() {
driver.cleanup();
}
private IsWidget getOperatingSystemWidget() {
ImportSource source = getModel().getSource();
return source == ImportSource.EXPORT_DOMAIN ? os : operatingSystems;
}
public void initialize() {
driver.initialize(this);
name.asValueBox().setWidth("130px"); //$NON-NLS-1$
name.asValueBox().getElement().getParentElement().getStyle().setTop(0, Style.Unit.PX);
name.asValueBox().getElement().getParentElement().getStyle().setLeft(-5, Style.Unit.PX);
operatingSystems.setWidth("130px"); //$NON-NLS-1$
formBuilder.addFormItem(new FormItem(constants.nameVm(), name, 0, 0));
formBuilder.addFormItem(new FormItem(constants.osVm(), getOperatingSystemWidget(), 1, 0));
formBuilder.addFormItem(new FormItem(constants.descriptionVm(), description, 2, 0));
formBuilder.addFormItem(new FormItem(constants.templateVm(), template, 3, 0));
formBuilder.addFormItem(new FormItem(constants.videoType(), defaultDisplayType, 4, 0));
formBuilder.addFormItem(new FormItem(constants.priorityVm(), priority, 5, 0));
formBuilder.addFormItem(new FormItem(constants.definedMemoryVm(), definedMemory, 6, 0));
formBuilder.addFormItem(new FormItem(constants.physMemGauranteedVm(), minAllocatedMemory, 0, 1));
formBuilder.addFormItem(new FormItem(constants.guestFreeCachedBufferedMemInfo(), guestFreeCachedBufferedMemInfo, 1, 1)
.withDefaultValue(constants.notConfigured(), () -> getModel().getGuestFreeCachedBufferedMemInfo() == null));
WidgetTooltip cpuInfoWithTooltip = new WidgetTooltip(cpuInfo);
cpuInfoWithTooltip.setHtml(SafeHtmlUtils.fromString(constants.numOfCpuCoresTooltip()));
formBuilder.addFormItem(new FormItem(constants.numOfCpuCoresVm(), cpuInfoWithTooltip, 2, 1));
formBuilder.addFormItem(new FormItem(constants.GuestCpuCount(), guestCpuCount, 3, 1));
formBuilder.addFormItem(new FormItem(constants.numOfMonitorsVm(), monitorCount, 4, 1));
formBuilder.addFormItem(new FormItem(constants.usbPolicyVm(), usbPolicy, 5, 1));
formBuilder.addFormItem(new FormItem(constants.originVm(), origin, 6, 1));
formBuilder.addFormItem(new FormItem(constants.runOnVm(), defaultHost, 0, 2));
formBuilder.addFormItem(new FormItem(constants.customPropertiesVm(), customProperties, 1, 2));
formBuilder.addFormItem(new FormItem(constants.clusterCompatibilityVersionVm(), compatibilityVersion, 2, 2));
formBuilder.addFormItem(new FormItem(constants.vmId(), vmId, 3, 2));
formBuilder.addFormItem(new FormItem(constants.quotaVm(), quotaName, 4, 2) {
@Override
public boolean getIsAvailable() {
return getModel().isQuotaAvailable();
}
}.withDefaultValue(constants.notConfigured(), () -> {
String quotaName = getModel().getQuotaName();
return quotaName == null || "".equals(quotaName);
}));
formBuilder.addFormItem(new FormItem(constants.domainVm(), domain, 5, 2) {
@Override
public boolean getIsAvailable() {
return getModel().getHasDomain();
}
});
formBuilder.addFormItem(new FormItem(constants.fqdn(), fqdn, 6, 2) {
@Override
public boolean getIsAvailable() {
String fqdn = getModel().getFqdn();
return !(fqdn == null || fqdn.isEmpty());
}
});
}
}