Daniel Erez has uploaded a new change for review.

Change subject: webadmin: attach disk dialog - no selection validation
......................................................................

webadmin: attach disk dialog - no selection validation

Validate no selected disks on attach dialog
(show a yellow frame with a tool-tip).

Change-Id: I17bbe414323ee81723809f5de4434406fa37cf69
Bug-Url: https://bugzilla.redhat.com/879218
Signed-off-by: Daniel Erez <de...@redhat.com>
---
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/ValidatedPanelWidget.java
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/ValidatedPanelWidget.ui.xml
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.ui.xml
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/DiskModel.java
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
6 files changed, 92 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/22/11822/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/ValidatedPanelWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/ValidatedPanelWidget.java
new file mode 100644
index 0000000..0aa3567
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/ValidatedPanelWidget.java
@@ -0,0 +1,36 @@
+package org.ovirt.engine.ui.common.widget;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.uibinder.client.UiBinder;
+import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.user.client.ui.SimplePanel;
+import com.google.gwt.user.client.ui.Widget;
+
+public class ValidatedPanelWidget extends AbstractValidatedWidget {
+
+    @UiField
+    SimplePanel panel;
+
+    interface WidgetUiBinder extends UiBinder<Widget, ValidatedPanelWidget> {
+        WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class);
+    }
+
+    public ValidatedPanelWidget() {
+        initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this));
+    }
+
+    @Override
+    protected Widget getValidatedWidget() {
+        return panel;
+    }
+
+    public void setPanelWidget(Widget widget) {
+        panel.setWidget(widget);
+    }
+
+    @Override
+    public void markAsValid() {
+        super.markAsValid();
+        getValidatedWidgetStyle().setBorderColor("transparent"); //$NON-NLS-1$
+    }
+}
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/ValidatedPanelWidget.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/ValidatedPanelWidget.ui.xml
new file mode 100644
index 0000000..b673e1d
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/ValidatedPanelWidget.ui.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!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">
+       
+    <g:SimplePanel ui:field="panel">
+    </g:SimplePanel>
+       
+</ui:UiBinder>
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.java
index 0b24963..d93ebc9 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.java
@@ -21,6 +21,7 @@
 import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
 import org.ovirt.engine.ui.common.idhandler.WithElementId;
 import org.ovirt.engine.ui.common.widget.Align;
+import org.ovirt.engine.ui.common.widget.ValidatedPanelWidget;
 import org.ovirt.engine.ui.common.widget.dialog.ProgressPopupContent;
 import org.ovirt.engine.ui.common.widget.editor.EntityModelCellTable;
 import org.ovirt.engine.ui.common.widget.editor.EntityModelCheckBoxEditor;
@@ -59,6 +60,7 @@
 import com.google.gwt.user.client.ui.HorizontalPanel;
 import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.RadioButton;
+import com.google.gwt.user.client.ui.SimplePanel;
 import com.google.gwt.user.client.ui.VerticalPanel;
 
 public class VmDiskPopupWidget extends 
AbstractModelBoundPopupWidget<DiskModel> {
@@ -167,6 +169,9 @@
     VerticalPanel attachDiskPanel;
 
     @UiField
+    SimplePanel innerAttachDiskPanel;
+
+    @UiField
     FlowPanel externalDiskPanel;
 
     @UiField
@@ -175,12 +180,10 @@
     @UiField
     HorizontalPanel diskTypePanel;
 
-    @UiField(provided = true)
     @Ignore
     @WithElementId
     EntityModelCellTable<ListModel> internalDiskTable;
 
-    @UiField(provided = true)
     @Ignore
     @WithElementId
     EntityModelCellTable<ListModel> externalDiskTable;
@@ -200,6 +203,9 @@
     @Ignore
     AbstractStorageView storageView;
 
+    @Ignore
+    ValidatedPanelWidget attachPanelWidget;
+
     boolean isNewLunDiskEnabled;
     StorageModel storageModel;
     IscsiStorageModel iscsiStorageModel;
@@ -214,6 +220,7 @@
         initWidget(ViewUiBinder.uiBinder.createAndBindUi(this));
         localize(constants);
         ViewIdHandler.idHandler.generateAndSetIds(this);
+        initAttachPanelWidget();
         initInternalDiskTable(constants, resources);
         initExternalDiskTable(constants, resources);
         Driver.driver.initialize(this);
@@ -285,6 +292,18 @@
 
         internalDiskTable = new EntityModelCellTable<ListModel>(true);
         externalDiskTable = new EntityModelCellTable<ListModel>(true);
+    }
+
+    private void initAttachPanelWidget() {
+        // Create tables container
+        VerticalPanel verticalPanel = new VerticalPanel();
+        verticalPanel.add(internalDiskTable);
+        verticalPanel.add(externalDiskTable);
+
+        // Create ValidatedPanelWidget and add tables container
+        attachPanelWidget = new ValidatedPanelWidget();
+        attachPanelWidget.setPanelWidget(verticalPanel);
+        innerAttachDiskPanel.add(attachPanelWidget);
     }
 
     private void initInternalDiskTable(final CommonApplicationConstants 
constants,
@@ -599,6 +618,21 @@
             }
         });
 
+        // Add event handlers
+        disk.getPropertyChangedEvent().addListener(new IEventListener() {
+            @Override
+            public void eventRaised(Event ev, Object sender, EventArgs args) {
+                String propName = ((PropertyChangedEventArgs) 
args).PropertyName;
+                if (propName.equals("IsValid")) { //$NON-NLS-1$
+                    if (disk.getIsValid()) {
+                        attachPanelWidget.markAsValid();
+                    } else {
+                        
attachPanelWidget.markAsInvalid(disk.getInvalidityReasons());
+                    }
+                }
+            }
+        });
+
         revealDiskPanel(disk);
     }
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.ui.xml
index c9cbdf8..b94f52f 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmDiskPopupWidget.ui.xml
@@ -106,10 +106,7 @@
                </g:VerticalPanel>
                <g:VerticalPanel ui:field="attachDiskPanel" 
addStyleNames="{style.mainPanel}" visible="false">
                        <g:ScrollPanel height="410px">
-                               <g:VerticalPanel width="100%">
-                                       <e:EntityModelCellTable 
ui:field="internalDiskTable" />
-                                       <e:EntityModelCellTable 
ui:field="externalDiskTable" />
-                               </g:VerticalPanel>
+                               <g:SimplePanel ui:field="innerAttachDiskPanel" 
width="100%" height="100%"/>
                        </g:ScrollPanel>
                        <e:EntityModelCheckBoxEditor ui:field="isPluggedEditor" 
addStyleNames="{style.isPluggedEditor}" />
                </g:VerticalPanel>
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/DiskModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/DiskModel.java
index 611893a..52dd236 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/DiskModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/DiskModel.java
@@ -969,6 +969,14 @@
     public boolean Validate()
     {
         if ((Boolean) getAttachDisk().getEntity()) {
+            if (getInternalAttachableDisks().getSelectedItems() == null &&
+                getExternalAttachableDisks().getSelectedItems() == null) {
+                getInvalidityReasons().add(
+                        
ConstantsManager.getInstance().getConstants().noDisksSelected());
+                setIsValid(false);
+                return false;
+            }
+
             return true;
         }
 
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
index 6e5ad2f..b8cae66 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
+++ 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java
@@ -1713,4 +1713,7 @@
 
     @DefaultStringValue("There may be users connected to the console who will 
not be able to reconnect. Do you want to proceed?")
     String confirmConsoleConnectMessage();
+    
+    @DefaultStringValue("No disks selected")
+    String noDisksSelected();
 }


--
To view, visit http://gerrit.ovirt.org/11822
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I17bbe414323ee81723809f5de4434406fa37cf69
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Daniel Erez <de...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to