package org.ovirt.engine.ui.webadmin.section.main.view.popup.storage; import org.ovirt.engine.core.common.businessentities.NfsVersion; 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.widget.dialog.AdvancedParametersExpander; import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor; import org.ovirt.engine.ui.common.widget.editor.generic.ShortEntityModelTextBoxEditor; import org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextBoxEditor; import org.ovirt.engine.ui.common.widget.uicommon.storage.AbstractStorageView; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.storage.NfsStorageModel; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style; import com.google.gwt.text.shared.AbstractRenderer; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.UIObject; import com.google.gwt.user.client.ui.Widget; import com.google.inject.Inject; public class NfsStorageView extends AbstractStorageView<NfsStorageModel> { interface Driver extends UiCommonEditorDriver<NfsStorageModel, NfsStorageView> { } interface ViewUiBinder extends UiBinder<Widget, NfsStorageView> { ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class); } interface ViewIdHandler extends ElementIdHandler<NfsStorageView> { ViewIdHandler idHandler = GWT.create(ViewIdHandler.class); } @UiField @Path(value = "path.entity") @WithElementId("path") StringEntityModelTextBoxEditor pathEditor; @UiField @Ignore Label pathExampleLabel; @UiField @Ignore AdvancedParametersExpander expander; @UiField @Ignore FlowPanel expanderContent; @UiField @Ignore Label warningLabel; @UiField(provided = true) @Path(value = "version.selectedItem") @WithElementId("version") ListModelListBoxEditor<EntityModel<NfsVersion>> versionListEditor; @UiField @Path(value = "retransmissions.entity") @WithElementId("retransmissions") ShortEntityModelTextBoxEditor retransmissionsEditor; @UiField @Path(value = "timeout.entity") @WithElementId("timeout") ShortEntityModelTextBoxEditor timeoutEditor; @UiField @Path(value = "mountOptions.entity") @WithElementId StringEntityModelTextBoxEditor mountOptionsEditor; @UiField Label message; private final Driver driver = GWT.create(Driver.class); @Inject public NfsStorageView() { initListBoxEditors(); initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); initExpander(); ViewIdHandler.idHandler.generateAndSetIds(this); driver.initialize(this); } private void initExpander() { expander.initWithContent(expanderContent.getElement()); } void initListBoxEditors() { versionListEditor = new ListModelListBoxEditor<>(new AbstractRenderer<EntityModel<NfsVersion>>() { @Override public String render(EntityModel<NfsVersion> model) { return model.getTitle(); } }); } @Override public void edit(final NfsStorageModel object) { driver.edit(object); EntityModel<NfsVersion> version = object.getVersion().getSelectedItem(); versionListEditor.asEditor().setValue(version); pathExampleLabel.setVisible(object.getPath().getIsChangable()); object.getMountOptions().getPropertyChangedEvent().addListener((ev, sender, args) -> { if (args.propertyName.equals("Title")) { //$NON-NLS-1$ mountOptionsEditor.setTitle(object.getMountOptions().getTitle()); } }); setElementVisibility(pathEditor, object.getPath().getIsAvailable()); setElementVisibility(versionListEditor, object.getVersion().getIsAvailable()); setElementVisibility(retransmissionsEditor, object.getRetransmissions().getIsAvailable()); setElementVisibility(timeoutEditor, object.getTimeout().getIsAvailable()); setElementVisibility(mountOptionsEditor, object.getTimeout().getIsAvailable()); } @Override public NfsStorageModel flush() { return driver.flush(); } @Override public void cleanup() { driver.cleanup(); } @Override public void focus() { pathEditor.setFocus(true); } private void setElementVisibility(UIObject object, boolean value) { object.getElement().getStyle().setDisplay(value ? Style.Display.BLOCK : Style.Display.NONE); } }