Daniel Erez has uploaded a new change for review.

Change subject: webadmin: enable Edit button for non-active block SDs (#850733)
......................................................................

webadmin: enable Edit button for non-active block SDs (#850733)

https://bugzilla.redhat.com/850733

Storage main-tab:
Enabling 'Edit' button when a non-active block storage domain
is selected - the 'Edit Domain' dialog should be opened in
view-only mode (merely for displaying domain's information).

Change-Id: I2bfe64fe10ebe1ddbdd5d8df475b176db5cd9794
Signed-off-by: Daniel Erez <de...@redhat.com>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/IscsiDiscoverTargetsView.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/IscsiDiscoverTargetsView.ui.xml
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/IscsiTargetToLunView.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/SanStorageModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageModel.java
6 files changed, 76 insertions(+), 27 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/92/7592/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/IscsiDiscoverTargetsView.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/IscsiDiscoverTargetsView.java
index 31b7e2f..2fca961 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/IscsiDiscoverTargetsView.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/IscsiDiscoverTargetsView.java
@@ -16,6 +16,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.storage.SanStorageModelBase;
 
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.dom.client.Style.Visibility;
 import com.google.gwt.editor.client.SimpleBeanEditorDriver;
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.ClickHandler;
@@ -31,6 +32,7 @@
 import com.google.gwt.uibinder.client.UiField;
 import com.google.gwt.user.client.ui.AbstractImagePrototype;
 import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.HorizontalPanel;
 import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.ToggleButton;
 import com.google.gwt.user.client.ui.VerticalPanel;
@@ -49,6 +51,9 @@
 
     @UiField
     WidgetStyle style;
+
+    @UiField
+    HorizontalPanel discoverTargetsLabelPanel;
 
     @UiField
     @Ignore
@@ -217,6 +222,11 @@
         });
     }
 
+    public void setEnabled(boolean enabled) {
+        Visibility visibility = enabled ? Visibility.VISIBLE : 
Visibility.HIDDEN;
+        
discoverTargetsLabelPanel.getElement().getStyle().setVisibility(visibility);
+    }
+
     @Override
     public SanStorageModelBase flush() {
         return Driver.driver.flush();
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/IscsiDiscoverTargetsView.ui.xml
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/IscsiDiscoverTargetsView.ui.xml
index 4589853..ffa9473 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/IscsiDiscoverTargetsView.ui.xml
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/IscsiDiscoverTargetsView.ui.xml
@@ -100,7 +100,7 @@
        </ui:style>     
 
        <g:FlowPanel>
-               <g:HorizontalPanel 
addStyleNames="{style.discoverTargetsLabelPanel}">   
+               <g:HorizontalPanel ui:field="discoverTargetsLabelPanel" 
addStyleNames="{style.discoverTargetsLabelPanel}">
                        <g:ToggleButton ui:field="discoverTargetsImageButton" 
addStyleNames="{style.discoverTargetsImageButton}" />
                </g:HorizontalPanel>            
                <g:VerticalPanel ui:field="discoverTargetsPanel" 
addStyleNames="{style.collapsedDiscoverTargetsPanel}">
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/IscsiTargetToLunView.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/IscsiTargetToLunView.java
index 60a2100..b14ab44 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/IscsiTargetToLunView.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/storage/IscsiTargetToLunView.java
@@ -99,6 +99,9 @@
         // Add view widgets to panel
         targetsToLunsDiscoverPanel.add(iscsiDiscoverTargetsView);
         targetsListPanel.add(sanStorageTargetToLunList);
+
+        // Disable Discover widget in view-only mode
+        
iscsiDiscoverTargetsView.setEnabled(object.getContainer().getIsChangable());
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/SanStorageModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/SanStorageModel.java
index 94c35c1..5868980 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/SanStorageModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/SanStorageModel.java
@@ -123,6 +123,10 @@
     {
         super.UpdateInternal();
 
+        if (!getContainer().isStorageActive()) {
+            return;
+        }
+
         VDS host = (VDS) getContainer().getHost().getSelectedItem();
         if (host == null)
         {
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java
index 3f3097d..47b9cee 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageListModel.java
@@ -349,6 +349,12 @@
         model.getDataCenter().setIsChangable(false);
         model.getFormat().setIsChangable(false);
 
+        boolean isStorageActive = model.isStorageActive();
+        model.getName().setIsChangable(isStorageActive);
+        model.getHost().setIsChangable(isStorageActive);
+        model.getAvailableStorageItems().setIsChangable(isStorageActive);
+        model.setIsChangable(isStorageActive);
+
         IStorageModel item = null;
         switch (storage.getstorage_type()) {
             case NFS:
@@ -389,17 +395,24 @@
             }
         }
 
-
         UICommand command;
-        command = new UICommand("OnSave", this); //$NON-NLS-1$
-        command.setTitle(ConstantsManager.getInstance().getConstants().ok());
-        command.setIsDefault(true);
-        model.getCommands().add(command);
+        if (isStorageActive) {
+            command = new UICommand("OnSave", this); //$NON-NLS-1$
+            
command.setTitle(ConstantsManager.getInstance().getConstants().ok());
+            command.setIsDefault(true);
+            model.getCommands().add(command);
 
-        command = new UICommand("Cancel", this); //$NON-NLS-1$
-        
command.setTitle(ConstantsManager.getInstance().getConstants().cancel());
-        command.setIsCancel(true);
-        model.getCommands().add(command);
+            command = new UICommand("Cancel", this); //$NON-NLS-1$
+            
command.setTitle(ConstantsManager.getInstance().getConstants().cancel());
+            command.setIsCancel(true);
+            model.getCommands().add(command);
+        }
+        else {
+            command = new UICommand("Cancel", this); //$NON-NLS-1$
+            
command.setTitle(ConstantsManager.getInstance().getConstants().close());
+            command.setIsCancel(true);
+            model.getCommands().add(command);
+        }
     }
 
     private IStorageModel PrepareNfsStorageForEdit(storage_domains storage)
@@ -502,29 +515,33 @@
         return model;
     }
 
-    private void PrepareSanStorageForEdit(SanStorageModel model)
+    private void PrepareSanStorageForEdit(final SanStorageModel model)
     {
         StorageModel storageModel = (StorageModel) getWindow();
-        final SanStorageModel sanStorageModel = model;
-        storageModel.getHost().getSelectedItemChangedEvent().addListener(new 
IEventListener() {
-            @Override
-            public void eventRaised(Event ev, Object sender, EventArgs args) {
-                PostPrepareSanStorageForEdit(sanStorageModel);
-            }
-        });
+        storage_domains storage = (storage_domains) getSelectedItem();
+        boolean isStorageActive = storageModel.isStorageActive();
+
+        if (isStorageActive) {
+            
storageModel.getHost().getSelectedItemChangedEvent().addListener(new 
IEventListener() {
+                @Override
+                public void eventRaised(Event ev, Object sender, EventArgs 
args) {
+                    PostPrepareSanStorageForEdit(model, true);
+                }
+            });
+        }
+        else {
+            PostPrepareSanStorageForEdit(model, false);
+        }
     }
 
-    private void PostPrepareSanStorageForEdit(SanStorageModel model)
+    private void PostPrepareSanStorageForEdit(SanStorageModel model, boolean 
isStorageActive)
     {
         StorageModel storageModel = (StorageModel) getWindow();
         storage_domains storage = (storage_domains) getSelectedItem();
         model.setStorageDomain(storage);
 
         VDS host = (VDS) storageModel.getHost().getSelectedItem();
-
-        if (host == null) {
-            return;
-        }
+        Guid hostId = host != null && isStorageActive ? host.getId() : null;
 
         AsyncDataProvider.GetLunsByVgId(new AsyncQuery(model, new 
INewAsyncCallback() {
             @Override
@@ -533,7 +550,7 @@
                 ArrayList<LUNs> lunList = (ArrayList<LUNs>) returnValue;
                 sanStorageModel.ApplyData(lunList, true);
             }
-        }), storage.getstorage(), host.getId());
+        }, storageModel.getHash()), storage.getstorage(), hostId);
     }
 
     private void ImportDomain()
@@ -1035,9 +1052,7 @@
 
         getNewDomainCommand().setIsAvailable(true);
 
-        getEditCommand().setIsExecutionAllowed(item != null
-                && items.size() == 1
-                && (item.getstorage_domain_shared_status() == 
StorageDomainSharedStatus.Active || item.getstorage_domain_shared_status() == 
StorageDomainSharedStatus.Mixed));
+        getEditCommand().setIsExecutionAllowed(items.size() == 1 && 
isEditAvailable(item));
 
         getRemoveCommand().setIsExecutionAllowed(items.size() == 1
                 && Linq.FindAllStorageDomainsBySharedStatus(items, 
StorageDomainSharedStatus.Unattached).size() == items.size());
@@ -1052,6 +1067,18 @@
         getRemoveCommand().setIsAvailable(isAvailable);
     }
 
+    private boolean isEditAvailable(storage_domains storageDomain) {
+        if (storageDomain == null) {
+            return false;
+        }
+
+        boolean isActive = storageDomain.getstorage_domain_shared_status() == 
StorageDomainSharedStatus.Active
+                || storageDomain.getstorage_domain_shared_status() == 
StorageDomainSharedStatus.Mixed;
+        boolean isBlockStorage = 
storageDomain.getstorage_type().isBlockDomain();
+
+        return isBlockStorage ? true : isActive;
+    }
+
     @Override
     public void ExecuteCommand(UICommand command)
     {
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageModel.java
index f714d9b..c7bb088 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageModel.java
@@ -719,4 +719,9 @@
     {
         privateSystemTreeSelectedItem = value;
     }
+
+    public boolean isStorageActive() {
+        return getStorage().getstorage_domain_shared_status() == 
StorageDomainSharedStatus.Active
+                || getStorage().getstorage_domain_shared_status() == 
StorageDomainSharedStatus.Mixed;
+    }
 }


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2bfe64fe10ebe1ddbdd5d8df475b176db5cd9794
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