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

Reply via email to