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