Kanagaraj M has uploaded a new change for review. Change subject: webadmin: Using editable combo for volume option key ......................................................................
webadmin: Using editable combo for volume option key In the Volume option dialog, the keys will be shown in a combo, the user can either select a key from the list or type his own key and provide the value for it. 'user.cifs' option is added explicitly to the key list as it will not available in the original key list. Change-Id: I48ac5232d95dc01b9f38160c00e37c02dcd44f0a Signed-off-by: Kanagaraj M <kmayi...@redhat.com> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeParameterListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeParameterModel.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeParameterPopupView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeParameterPopupView.ui.xml 5 files changed, 125 insertions(+), 35 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/84/8184/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java index 633c0de..90daf6d 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java @@ -1041,7 +1041,10 @@ { ArrayList<GlusterVolumeOptionInfo> list = new ArrayList<GlusterVolumeOptionInfo>((Set<GlusterVolumeOptionInfo>) source); - + // user.cifs option will be present in the list by default, so adding it now + GlusterVolumeOptionInfo cifsOption = new GlusterVolumeOptionInfo(); + cifsOption.setKey("user.cifs"); //$NON-NLS-1$ + list.add(cifsOption); return list; } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeParameterListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeParameterListModel.java index e38be89..5d4e6d5 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeParameterListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeParameterListModel.java @@ -109,6 +109,7 @@ VolumeParameterModel volumeParameterModel = new VolumeParameterModel(); volumeParameterModel.setTitle(ConstantsManager.getInstance().getConstants().addOptionVolume()); setWindow(volumeParameterModel); + volumeParameterModel.StartProgress(null); AsyncQuery _asyncQuery = new AsyncQuery(); _asyncQuery.setModel(this); @@ -121,6 +122,8 @@ ArrayList<GlusterVolumeOptionInfo> optionInfoList = (ArrayList<GlusterVolumeOptionInfo>) result; innerParameterModel.getKeyList().setItems(optionInfoList); + + innerParameterModel.StopProgress(); UICommand command = new UICommand("OnSetParameter", volumeParameterListModel); //$NON-NLS-1$ command.setTitle(ConstantsManager.getInstance().getConstants().ok()); @@ -151,7 +154,7 @@ GlusterVolumeOptionEntity option = new GlusterVolumeOptionEntity(); option.setVolumeId(volume.getId()); - option.setKey(((GlusterVolumeOptionInfo) model.getKeyList().getSelectedItem()).getKey()); + option.setKey((String) model.getSelectedKey().getEntity()); option.setValue((String) model.getValue().getEntity()); model.StartProgress(null); @@ -197,9 +200,12 @@ VolumeParameterModel volumeParameterModel = new VolumeParameterModel(); volumeParameterModel.setTitle(ConstantsManager.getInstance().getConstants().editOptionVolume()); + volumeParameterModel.setIsNew(false); setWindow(volumeParameterModel); volumeParameterModel.getKeyList().setIsChangable(false); + volumeParameterModel.getSelectedKey().setIsChangable(false); + volumeParameterModel.StartProgress(null); AsyncQuery _asyncQuery = new AsyncQuery(); _asyncQuery.setModel(this); @@ -214,17 +220,12 @@ innerParameterModel.getKeyList().setItems(optionInfoList); GlusterVolumeOptionEntity selectedOption = (GlusterVolumeOptionEntity) getSelectedItem(); - - for (GlusterVolumeOptionInfo option : optionInfoList) { - if (option.getKey().equals(selectedOption.getKey())) - { - innerParameterModel.getKeyList().setSelectedItem(option); - break; - } - } - + innerParameterModel.getDescription().setEntity(""); //$NON-NLS-1$ + innerParameterModel.getSelectedKey().setEntity(selectedOption.getKey()); innerParameterModel.getValue().setEntity(selectedOption.getValue()); + innerParameterModel.StopProgress(); + UICommand command = new UICommand("OnSetParameter", volumeParameterListModel); //$NON-NLS-1$ command.setTitle(ConstantsManager.getInstance().getConstants().ok()); command.setIsDefault(true); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeParameterModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeParameterModel.java index 0457e6e..c7eb1c0 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeParameterModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/gluster/VolumeParameterModel.java @@ -1,5 +1,7 @@ package org.ovirt.engine.ui.uicommonweb.models.gluster; +import java.util.List; + import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeOptionInfo; import org.ovirt.engine.core.compat.Event; import org.ovirt.engine.core.compat.EventArgs; @@ -12,19 +14,32 @@ public class VolumeParameterModel extends EntityModel { private ListModel keyList; + private EntityModel selectedKey; private EntityModel value; private EntityModel description; + private Boolean isNew; public VolumeParameterModel() { setKeyList(new ListModel()); + setSelectedKey(new EntityModel()); setValue(new EntityModel()); setDescription(new EntityModel()); + + setIsNew(true); getKeyList().getSelectedItemChangedEvent().addListener(new IEventListener() { @Override public void eventRaised(Event ev, Object sender, EventArgs args) { - keySelectedItemChanged(); + keyItemChanged(); + } + }); + + getSelectedKey().getEntityChangedEvent().addListener(new IEventListener() { + + @Override + public void eventRaised(Event ev, Object sender, EventArgs args) { + selectedKeyChanged(); } }); } @@ -35,6 +50,16 @@ public void setKeyList(ListModel keyList) { this.keyList = keyList; + } + + public EntityModel getSelectedKey() + { + return selectedKey; + } + + public void setSelectedKey(EntityModel value) + { + this.selectedKey = value; } public EntityModel getValue() { @@ -53,33 +78,70 @@ this.description = description; } - private void keySelectedItemChanged() { - String description = ((GlusterVolumeOptionInfo) getKeyList().getSelectedItem()).getDescription(); - if (description.equals("(null)")) //$NON-NLS-1$ + public Boolean getIsNew() { + return isNew; + } + + public void setIsNew(Boolean isNew) { + this.isNew = isNew; + } + + private void keyItemChanged() { + if (getIsNew() && getKeyList().getSelectedItem() != null) { - getDescription().setEntity(null); + getSelectedKey().setEntity(((GlusterVolumeOptionInfo) getKeyList().getSelectedItem()).getKey()); } - else + } + + private void selectedKeyChanged() { + String key = (String) getSelectedKey().getEntity(); + List<GlusterVolumeOptionInfo> options = (List<GlusterVolumeOptionInfo>) getKeyList().getItems(); + GlusterVolumeOptionInfo selectedOption = null; + for (GlusterVolumeOptionInfo option : options) { - getDescription().setEntity(description); + if (option.getKey().equals(key.trim())) + { + selectedOption = option; + break; + } } - String defaultValue = ((GlusterVolumeOptionInfo) getKeyList().getSelectedItem()).getDefaultValue(); - if (defaultValue.equals("(null)")) //$NON-NLS-1$ + if (selectedOption != null) { - getValue().setEntity(null); + if (selectedOption.getDescription().equals("(null)")) //$NON-NLS-1$ + { + getDescription().setEntity(null); + } + else + { + getDescription().setEntity(selectedOption.getDescription()); + } + + if (getIsNew()) + { + if (selectedOption.getDefaultValue().equals("(null)")) //$NON-NLS-1$ + { + getValue().setEntity(null); + } + else + { + getValue().setEntity(selectedOption.getDefaultValue()); + } + } } - else + else if (getIsNew()) { - getValue().setEntity(defaultValue); + getDescription().setEntity(null); + getValue().setEntity(null); } } public boolean Validate() { NotEmptyValidation valueValidation = new NotEmptyValidation(); + getSelectedKey().ValidateEntity(new IValidation[] { valueValidation }); getValue().ValidateEntity(new IValidation[] { valueValidation }); - return getKeyList().getIsValid() && getValue().getIsValid(); + return getSelectedKey().getIsValid() && getValue().getIsValid(); } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeParameterPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeParameterPopupView.java index 56b0eae..5f517a5 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeParameterPopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeParameterPopupView.java @@ -2,7 +2,9 @@ import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeOptionInfo; import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; +import org.ovirt.engine.ui.common.idhandler.WithElementId; import org.ovirt.engine.ui.common.view.popup.AbstractModelBoundPopupView; +import org.ovirt.engine.ui.common.widget.ComboBox; import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel; import org.ovirt.engine.ui.common.widget.editor.EntityModelTextAreaLabelEditor; import org.ovirt.engine.ui.common.widget.editor.EntityModelTextBoxEditor; @@ -34,9 +36,23 @@ ViewIdHandler idHandler = GWT.create(ViewIdHandler.class); } + /* + * @UiField(provided = true) + * + * @Path(value = "keyList.selectedItem") ListModelListBoxEditor<Object> keyListEditor; + */ + @UiField(provided = true) + @WithElementId("keyComboBox") + ComboBox keyComboBox; + @Path(value = "keyList.selectedItem") - ListModelListBoxEditor<Object> keyListEditor; + @WithElementId("keyListBox") + ListModelListBoxEditor<Object> keyListBoxEditor; + + @Path(value = "selectedKey.entity") + @WithElementId("keyTextBox") + EntityModelTextBoxEditor keyTextBoxEditor; @UiField @Path(value = "description.entity") @@ -49,15 +65,21 @@ @Inject public VolumeParameterPopupView(EventBus eventBus, ApplicationResources resources, ApplicationConstants constants) { super(eventBus, resources); - initKeyEditor(); + initComboBox(); initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); ViewIdHandler.idHandler.generateAndSetIds(this); localize(constants); Driver.driver.initialize(this); } - private void initKeyEditor() { - keyListEditor = new ListModelListBoxEditor<Object>(new StringRenderer<Object>() { + private void localize(ApplicationConstants constants) { + keyListBoxEditor.setLabel(constants.optionKeyVolumeParameter()); + descriptionEditor.setLabel(constants.descriptionVolumeParameter()); + valueEditor.setLabel(constants.optionValueVolumeParameter()); + } + + void initComboBox() { + keyListBoxEditor = new ListModelListBoxEditor<Object>(new StringRenderer<Object>() { @Override public String render(Object object) { GlusterVolumeOptionInfo optionInfo = (GlusterVolumeOptionInfo) object; @@ -68,12 +90,9 @@ return null; } }); - } + keyTextBoxEditor = new EntityModelTextBoxEditor(); - private void localize(ApplicationConstants constants) { - keyListEditor.setLabel(constants.optionKeyVolumeParameter()); - descriptionEditor.setLabel(constants.descriptionVolumeParameter()); - valueEditor.setLabel(constants.optionValueVolumeParameter()); + keyComboBox = new ComboBox(keyListBoxEditor, keyTextBoxEditor); } @Override diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeParameterPopupView.ui.xml b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeParameterPopupView.ui.xml index b39f473..aa87793 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeParameterPopupView.ui.xml +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/gluster/VolumeParameterPopupView.ui.xml @@ -2,18 +2,23 @@ <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:d="urn:import:org.ovirt.engine.ui.common.widget.dialog" - xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor"> + xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor" + xmlns:w="urn:import:org.ovirt.engine.ui.common.widget"> <ui:style> .description textarea{ height: 130px; + + } + .key label{ + margin-left: 0px; } </ui:style> <d:SimpleDialogPanel width="450px" height="300px"> <d:content> <g:VerticalPanel> - <e:ListModelListBoxEditor ui:field="keyListEditor" /> + <w:ComboBox ui:field="keyComboBox" addStyleNames="{style.key}"/> <e:EntityModelTextAreaLabelEditor addStyleNames="{style.description}" ui:field="descriptionEditor"/> <e:EntityModelTextBoxEditor ui:field="valueEditor" /> </g:VerticalPanel> -- To view, visit http://gerrit.ovirt.org/8184 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I48ac5232d95dc01b9f38160c00e37c02dcd44f0a Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Kanagaraj M <kmayi...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches