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

Reply via email to