Daniel Erez has uploaded a new change for review. Change subject: webadmin: import FCP data storage domain dialog ......................................................................
webadmin: import FCP data storage domain dialog Import domain dialog -> added a view for import FCP data domain which contains a panel for storage domains that are candidate for import. Feature page: http://www.ovirt.org/Features/ImportStorageDomain#GUI_Perspective_2 Change-Id: I529680fbf0180874ffad02a050601fd1294fbec1 Signed-off-by: Daniel Erez <de...@redhat.com> --- A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/ImportFcpStorageView.java A frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/ImportFcpStorageView.ui.xml A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ImportFcpStorageModel.java 3 files changed, 199 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/66/29166/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/ImportFcpStorageView.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/ImportFcpStorageView.java new file mode 100644 index 0000000..efd19fd --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/ImportFcpStorageView.java @@ -0,0 +1,125 @@ +package org.ovirt.engine.ui.common.widget.uicommon.storage; + +import java.util.List; + +import com.google.gwt.user.client.ui.Label; +import org.ovirt.engine.core.common.businessentities.StorageDomain; +import org.ovirt.engine.ui.common.widget.HasValidation; +import org.ovirt.engine.ui.common.widget.ValidatedPanelWidget; +import org.ovirt.engine.ui.common.widget.editor.ListModelObjectCellTable; +import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip; +import org.ovirt.engine.ui.uicommonweb.models.EntityModel; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; +import org.ovirt.engine.ui.uicommonweb.models.storage.ImportFcpStorageModel; +import org.ovirt.engine.ui.uicompat.Event; +import org.ovirt.engine.ui.uicompat.EventArgs; +import org.ovirt.engine.ui.uicompat.IEventListener; +import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.editor.client.SimpleBeanEditorDriver; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Widget; + +public class ImportFcpStorageView extends AbstractStorageView<ImportFcpStorageModel> implements HasValidation { + + interface Driver extends SimpleBeanEditorDriver<ImportFcpStorageModel, ImportFcpStorageView> { + } + + interface ViewUiBinder extends UiBinder<Widget, ImportFcpStorageView> { + ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class); + } + + private final Driver driver = GWT.create(Driver.class); + + @UiField(provided = true) + @Ignore + ListModelObjectCellTable<StorageDomain, ListModel> storageDomainsTable; + + @UiField + ValidatedPanelWidget storageDomainsPanel; + + @UiField + Label message; + + public ImportFcpStorageView() { + initViews(); + initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); + driver.initialize(this); + } + + @Override + public void edit(final ImportFcpStorageModel object) { + driver.edit(object); + + storageDomainsTable.asEditor().edit(object.getStorageDomains()); + addEventsHandlers(object); + } + + private void addEventsHandlers(final ImportFcpStorageModel object) { + object.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$ + onIsValidPropertyChange(object); + } else if (propName.equals("Message")) { //$NON-NLS-1$ + message.setText(object.getMessage()); + } + } + }); + } + + private void initViews() { + createSotrageDomainsTable(); + } + + private void createSotrageDomainsTable() { + storageDomainsTable = new ListModelObjectCellTable<StorageDomain, ListModel>(true, true); + storageDomainsTable.enableColumnResizing(); + + TextColumnWithTooltip<StorageDomain> nameColumn = new TextColumnWithTooltip<StorageDomain>() { + @Override + public String getValue(StorageDomain object) { + return object.getStorageName(); + } + }; + storageDomainsTable.addColumn(nameColumn, constants.storageName(), "50%"); //$NON-NLS-1$ + + TextColumnWithTooltip<StorageDomain> storageIdColumn = new TextColumnWithTooltip<StorageDomain>() { + @Override + public String getValue(StorageDomain object) { + return object.getId().toString(); + } + }; + storageDomainsTable.addColumn(storageIdColumn, constants.storageIdVgName(), "50%"); //$NON-NLS-1$ + } + + private void onIsValidPropertyChange(EntityModel model) { + if (model.getIsValid()) { + markAsValid(); + } else { + markAsInvalid(model.getInvalidityReasons()); + } + } + + @Override + public void markAsValid() { + storageDomainsPanel.markAsValid(); + } + + @Override + public void markAsInvalid(List<String> validationHints) { + storageDomainsPanel.markAsInvalid(validationHints); + } + + @Override + public ImportFcpStorageModel flush() { + return driver.flush(); + } + + @Override + public void focus() { + } +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/ImportFcpStorageView.ui.xml b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/ImportFcpStorageView.ui.xml new file mode 100644 index 0000000..288e5cb --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/ImportFcpStorageView.ui.xml @@ -0,0 +1,39 @@ +<?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" + xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor" + xmlns:w="urn:import:org.ovirt.engine.ui.common.widget"> + + <ui:style> + .containerPanel { + position: absolute !important; + width: 100%; + bottom: 0; + top: 120px; + } + + .containerPanelInner { + overflow: auto; + position: absolute; + margin: 5px; + top: 20px; + bottom: 0px; + left: 0px; + right: 0px; + } + + .errorLabel { + color: #CD2127; + margin-left: 5px; + } + + </ui:style> + + <g:FlowPanel addStyleNames="{style.containerPanel}"> + <g:Label ui:field="message" addStyleNames="{style.errorLabel}"/> + <w:ValidatedPanelWidget ui:field="storageDomainsPanel" addStyleNames="{style.containerPanelInner}"> + <e:ListModelObjectCellTable ui:field="storageDomainsTable"/> + </w:ValidatedPanelWidget> + </g:FlowPanel> + +</ui:UiBinder> diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ImportFcpStorageModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ImportFcpStorageModel.java new file mode 100644 index 0000000..d7fc78d --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/ImportFcpStorageModel.java @@ -0,0 +1,35 @@ +package org.ovirt.engine.ui.uicommonweb.models.storage; + +import org.ovirt.engine.core.common.businessentities.StorageDomain; +import org.ovirt.engine.core.common.businessentities.StorageServerConnections; +import org.ovirt.engine.core.common.businessentities.StorageType; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; +import org.ovirt.engine.ui.uicompat.ConstantsManager; + +import java.util.ArrayList; +import java.util.List; + +public class ImportFcpStorageModel extends ImportSanStorageModel { + @Override + public StorageType getType() { + return StorageType.FCP; + } + + public ImportFcpStorageModel() { + setStorageDomains(new ListModel<StorageDomain>()); + getStorageDomains().setItems(new ArrayList<StorageDomain>()); + } + + @Override + protected void update() { + setMessage(null); + getStorageDomains().setItems(new ArrayList<StorageDomain>()); + getUnregisteredStorageDomains(null); + } + + @Override + protected void postGetUnregisteredStorageDomains(List<StorageDomain> storageDomains, List<StorageServerConnections> connections) { + setMessage(storageDomains == null || storageDomains.isEmpty() ? + ConstantsManager.getInstance().getConstants().noStorageDomainsFound() : null); + } +} -- To view, visit http://gerrit.ovirt.org/29166 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I529680fbf0180874ffad02a050601fd1294fbec1 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