package org.ovirt.engine.ui.webadmin.section.main.view.tab.pool; import javax.inject.Inject; import org.ovirt.engine.core.common.businessentities.VmPool; import org.ovirt.engine.ui.common.editor.UiCommonEditorDriver; import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; import org.ovirt.engine.ui.common.idhandler.WithElementId; import org.ovirt.engine.ui.common.uicommon.model.DetailModelProvider; import org.ovirt.engine.ui.common.view.AbstractSubTabFormView; import org.ovirt.engine.ui.common.widget.form.FormBuilder; import org.ovirt.engine.ui.common.widget.form.FormItem; import org.ovirt.engine.ui.common.widget.form.GeneralFormPanel; import org.ovirt.engine.ui.common.widget.label.StringValueLabel; import org.ovirt.engine.ui.common.widget.tooltip.WidgetTooltip; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.pools.PoolGeneralModel; import org.ovirt.engine.ui.uicommonweb.models.pools.PoolListModel; import org.ovirt.engine.ui.webadmin.ApplicationConstants; import org.ovirt.engine.ui.webadmin.gin.AssetProvider; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.pool.SubTabPoolGeneralPresenter; import com.google.gwt.core.client.GWT; import com.google.gwt.editor.client.Editor; import com.google.gwt.safehtml.shared.SafeHtmlUtils; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Widget; public class SubTabPoolGeneralView extends AbstractSubTabFormView<VmPool, PoolListModel, PoolGeneralModel> implements SubTabPoolGeneralPresenter.ViewDef, Editor<PoolGeneralModel> { interface ViewUiBinder extends UiBinder<Widget, SubTabPoolGeneralView> { ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class); } interface ViewIdHandler extends ElementIdHandler<SubTabPoolGeneralView> { ViewIdHandler idHandler = GWT.create(ViewIdHandler.class); } interface Driver extends UiCommonEditorDriver<PoolGeneralModel, SubTabPoolGeneralView> { } StringValueLabel cpuInfo = new StringValueLabel(); StringValueLabel graphicsType = new StringValueLabel(); StringValueLabel defaultDisplayType = new StringValueLabel(); StringValueLabel defaultHost = new StringValueLabel(); StringValueLabel definedMemory = new StringValueLabel(); StringValueLabel description = new StringValueLabel(); StringValueLabel domain = new StringValueLabel(); StringValueLabel minAllocatedMemory = new StringValueLabel(); StringValueLabel name = new StringValueLabel(); StringValueLabel origin = new StringValueLabel(); @Ignore StringValueLabel oS = new StringValueLabel(); StringValueLabel template = new StringValueLabel(); StringValueLabel timeZone = new StringValueLabel(); StringValueLabel usbPolicy = new StringValueLabel(); StringValueLabel quotaName = new StringValueLabel(); @Ignore StringValueLabel isStateless = new StringValueLabel(); @Ignore StringValueLabel monitorCount = new StringValueLabel(); @UiField(provided = true) @WithElementId GeneralFormPanel formPanel; FormBuilder formBuilder; private final Driver driver = GWT.create(Driver.class); private static final ApplicationConstants constants = AssetProvider.getConstants(); @Inject public SubTabPoolGeneralView(DetailModelProvider<PoolListModel, PoolGeneralModel> modelProvider) { super(modelProvider); // Init formPanel formPanel = new GeneralFormPanel(); initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); driver.initialize(this); generateIds(); // Build a form using the FormBuilder formBuilder = new FormBuilder(formPanel, 3, 7); formBuilder.setRelativeColumnWidth(0, 3); formBuilder.setRelativeColumnWidth(1, 4); formBuilder.setRelativeColumnWidth(2, 5); formBuilder.addFormItem(new FormItem(constants.namePoolGeneral(), name, 0, 0)); formBuilder.addFormItem(new FormItem(constants.descriptionPoolGeneral(), description, 1, 0)); formBuilder.addFormItem(new FormItem(constants.templatePoolGeneral(), template, 2, 0)); formBuilder.addFormItem(new FormItem(constants.osPoolGeneral(), oS, 3, 0)); formBuilder.addFormItem(new FormItem(constants.graphicsProtocol(), graphicsType, 4, 0)); formBuilder.addFormItem(new FormItem(constants.videoType(), defaultDisplayType, 5, 0)); formBuilder.addFormItem(new FormItem(constants.quota(), quotaName, 6, 0)); formBuilder.addFormItem(new FormItem(constants.definedMemPoolGeneral(), definedMemory, 0, 1)); formBuilder.addFormItem(new FormItem(constants.physMemGaurPoolGeneral(), minAllocatedMemory, 1, 1)); WidgetTooltip cpuInfoWithTooltip = new WidgetTooltip(cpuInfo); cpuInfoWithTooltip.setHtml(SafeHtmlUtils.fromString(constants.numOfCpuCoresTooltip())); formBuilder.addFormItem(new FormItem(constants.numOfCpuCoresPoolGeneral(), cpuInfoWithTooltip, 2, 1)); formBuilder.addFormItem(new FormItem(constants.numOfMonitorsPoolGeneral(), monitorCount, 3, 1)); formBuilder.addFormItem(new FormItem(constants.usbPolicyPoolGeneral(), usbPolicy, 4, 1)); formBuilder.addFormItem(new FormItem(constants.originPoolGeneral(), origin, 0, 2)); formBuilder.addFormItem(new FormItem(constants.isStatelessPoolGeneral(), isStateless, 1, 2)); formBuilder.addFormItem(new FormItem(constants.runOnPoolGeneral(), defaultHost, 2, 2)); formBuilder.addFormItem(new FormItem(constants.domainPoolGeneral(), domain, 3, 2, "HasDomain") { //$NON-NLS-1$ @Override public boolean getIsAvailable() { return getDetailModel().getHasDomain(); } }); formBuilder.addFormItem(new FormItem(constants.tzPoolGeneral(), timeZone, 4, 2, "HasTimeZone") { //$NON-NLS-1$ @Override public boolean getIsAvailable() { return getDetailModel().getHasTimeZone(); } }); } @Override protected void generateIds() { ViewIdHandler.idHandler.generateAndSetIds(this); } @Override public void setMainTabSelectedItem(VmPool selectedItem) { driver.edit(getDetailModel()); // Required because of type conversion monitorCount.setValue(String.valueOf(getDetailModel().getMonitorCount())); isStateless.setValue(Boolean.toString(getDetailModel().getIsStateless())); oS.setValue(AsyncDataProvider.getInstance().getOsName(getDetailModel().getOS())); formBuilder.update(getDetailModel()); } }