Martin Mucha has uploaded a new change for review.

Change subject: webadmin: gui for adding macPool permissions.
......................................................................

webadmin: gui for adding macPool permissions.

Change-Id: Idb6b442e7eebce367b9008f4b9c1df9ade84745f
Signed-off-by: Martin Mucha <[email protected]>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/MacPoolPermissionModel.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UiCommonModule.java
A 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/MacPoolPermissionModelProvider.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/SharedMacPoolView.java
6 files changed, 210 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/11/32211/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
index c540c82..99459be 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
@@ -246,6 +246,7 @@
     GetMacPoolById,
     GetMacPoolsByDataCenterId,
     GetAllMacPools,
+    GetMacPoolPermissions,
     GetStoragePoolByDatacenterName(VdcQueryAuthType.User),
     GetStorageDomainsByConnection,
     GetConnectionsByDataCenterAndStorageType,
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
index c849d2a..06f852c 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java
@@ -31,6 +31,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.events.EventListModel;
 import org.ovirt.engine.ui.uicommonweb.models.events.TaskListModel;
 import org.ovirt.engine.ui.uicommonweb.models.hosts.HostListModel;
+import org.ovirt.engine.ui.uicommonweb.models.macpool.MacPoolPermissionModel;
 import org.ovirt.engine.ui.uicommonweb.models.macpool.SharedMacPoolListModel;
 import org.ovirt.engine.ui.uicommonweb.models.networks.NetworkListModel;
 import org.ovirt.engine.ui.uicommonweb.models.pools.PoolListModel;
@@ -84,6 +85,7 @@
     private ClusterPolicyListModel clusterPolicyListModel;
     private InstanceTypeListModel instanceTypeListModel;
     private SharedMacPoolListModel sharedMacPoolListModel;
+    private MacPoolPermissionModel macPoolPermissionModel;
 
     // NOTE: when adding a new ListModel here, be sure to add it to the list 
in initItems()
     private SearchableListModel dataCenterList;
@@ -208,6 +210,7 @@
         systemPermissionListModel = new SystemPermissionListModel();
         clusterPolicyListModel = new ClusterPolicyListModel();
         sharedMacPoolListModel = new SharedMacPoolListModel();
+        macPoolPermissionModel = new MacPoolPermissionModel();
 
         // Activate the default list model.
         setSelectedItem(getDefaultItem());
@@ -531,7 +534,8 @@
         
model.setTitle(ConstantsManager.getInstance().getConstants().ConfigureTitle());
         model.setHelpTag(HelpTag.configure);
         model.setHashName("configure"); //$NON-NLS-1$
-        model.setEntity(new Model[] { roleListModel, 
systemPermissionListModel, clusterPolicyListModel, sharedMacPoolListModel });
+        //TODO MM: what is this for?
+        model.setEntity(new Model[] { roleListModel, 
systemPermissionListModel, clusterPolicyListModel, sharedMacPoolListModel, 
macPoolPermissionModel });
 
         UICommand tempVar = new UICommand("Cancel", this); //$NON-NLS-1$
         
tempVar.setTitle(ConstantsManager.getInstance().getConstants().close());
@@ -1039,6 +1043,10 @@
         return sharedMacPoolListModel;
     }
 
+    public MacPoolPermissionModel getMacPoolPermissionModel() {
+        return macPoolPermissionModel;
+    }
+
     public Event getSignedOutEvent()
     {
         return privateSignedOutEvent;
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/MacPoolPermissionModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/MacPoolPermissionModel.java
new file mode 100644
index 0000000..6e7afa0
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/macpool/MacPoolPermissionModel.java
@@ -0,0 +1,65 @@
+package org.ovirt.engine.ui.uicommonweb.models.macpool;
+
+import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+import org.ovirt.engine.ui.uicommonweb.UICommand;
+import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel;
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
+
+public class MacPoolPermissionModel extends SearchableListModel {
+
+    private UICommand addCommand;
+    private UICommand removeCommand;
+
+    public MacPoolPermissionModel() {
+        
setTitle(ConstantsManager.getInstance().getConstants().clusterPolicyTitle());
+
+        setAddCommand(new UICommand("Add", this)); //$NON-NLS-1$
+        setRemoveCommand(new UICommand("Remove", this)); //$NON-NLS-1$
+
+        setSearchPageSize(1000);
+
+        //            updateActionAvailability();
+    }
+
+    @Override
+    protected void onSelectedItemChanged() {
+        super.onSelectedItemChanged();
+    }
+
+    @Override
+    public void executeCommand(UICommand command) {
+        super.executeCommand(command);
+    }
+
+    @Override
+    protected void selectedItemsChanged() {
+        super.selectedItemsChanged();
+    }
+
+    @Override
+    protected String getListName() {
+        return "MacPoolPermissionListModel"; //$NON-NLS-1$
+    }
+
+    @Override
+    protected void syncSearch() {
+        super.syncSearch(VdcQueryType.GetMacPoolPermissions, new 
VdcQueryParametersBase());
+    }
+
+    public UICommand getAddCommand() {
+        return addCommand;
+    }
+
+    public void setAddCommand(UICommand addCommand) {
+        this.addCommand = addCommand;
+    }
+
+    public UICommand getRemoveCommand() {
+        return removeCommand;
+    }
+
+    public void setRemoveCommand(UICommand removeCommand) {
+        this.removeCommand = removeCommand;
+    }
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UiCommonModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UiCommonModule.java
index 65a2e22..77309fc 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UiCommonModule.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/UiCommonModule.java
@@ -1,6 +1,5 @@
 package org.ovirt.engine.ui.webadmin.gin;
 
-import com.google.inject.Singleton;
 import org.ovirt.engine.ui.common.gin.BaseUiCommonModule;
 import org.ovirt.engine.ui.uicommonweb.models.LoginModel;
 import org.ovirt.engine.ui.webadmin.gin.uicommon.ClusterModule;
@@ -19,6 +18,7 @@
 import org.ovirt.engine.ui.webadmin.gin.uicommon.VirtualMachineModule;
 import org.ovirt.engine.ui.webadmin.gin.uicommon.VnicProfileModule;
 import org.ovirt.engine.ui.webadmin.gin.uicommon.VolumeModule;
+import 
org.ovirt.engine.ui.webadmin.section.main.view.popup.macpool.MacPoolPermissionModelProvider;
 import org.ovirt.engine.ui.webadmin.uicommon.WebAdminConfigurator;
 import org.ovirt.engine.ui.webadmin.uicommon.model.AlertFirstRowModelProvider;
 import org.ovirt.engine.ui.webadmin.uicommon.model.AlertModelProvider;
@@ -37,6 +37,8 @@
 import org.ovirt.engine.ui.webadmin.uicommon.model.TagModelProvider;
 import org.ovirt.engine.ui.webadmin.uicommon.model.TaskFirstRowModelProvider;
 import org.ovirt.engine.ui.webadmin.uicommon.model.TaskModelProvider;
+
+import com.google.inject.Singleton;
 
 /**
  * GIN module containing WebAdmin UiCommon model and integration bindings.
@@ -110,6 +112,9 @@
 
         // SharedMacPoolListModel
         bind(SharedMacPoolModelProvider.class).asEagerSingleton();
+
+        // MacPoolPermissionModelProvider
+        bind(MacPoolPermissionModelProvider.class).asEagerSingleton();
     }
 
     void bindIntegration() {
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/MacPoolPermissionModelProvider.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/MacPoolPermissionModelProvider.java
new file mode 100644
index 0000000..9789b11
--- /dev/null
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/MacPoolPermissionModelProvider.java
@@ -0,0 +1,25 @@
+package org.ovirt.engine.ui.webadmin.section.main.view.popup.macpool;
+
+import org.ovirt.engine.core.common.businessentities.Permissions;
+import 
org.ovirt.engine.ui.common.presenter.popup.DefaultConfirmationPopupPresenterWidget;
+import org.ovirt.engine.ui.common.uicommon.model.SearchableTabModelProvider;
+import org.ovirt.engine.ui.uicommonweb.models.macpool.MacPoolPermissionModel;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class MacPoolPermissionModelProvider extends 
SearchableTabModelProvider<Permissions, MacPoolPermissionModel> {
+
+    @Inject
+    public MacPoolPermissionModelProvider(EventBus eventBus,
+            Provider<DefaultConfirmationPopupPresenterWidget> 
defaultConfirmPopupProvider) {
+        super(eventBus, defaultConfirmPopupProvider);
+    }
+
+    @Override
+    public MacPoolPermissionModel getModel() {
+        return getCommonModel().getMacPoolPermissionModel();
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/SharedMacPoolView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/SharedMacPoolView.java
index 9356de5..4a7b897 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/SharedMacPoolView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/macpool/SharedMacPoolView.java
@@ -1,10 +1,12 @@
 package org.ovirt.engine.ui.webadmin.section.main.view.popup.macpool;
 
 import org.ovirt.engine.core.common.businessentities.MacPool;
+import org.ovirt.engine.core.common.businessentities.Permissions;
 import org.ovirt.engine.ui.common.MainTableHeaderlessResources;
 import org.ovirt.engine.ui.common.MainTableResources;
 import org.ovirt.engine.ui.common.system.ClientStorage;
 import org.ovirt.engine.ui.common.widget.table.SimpleActionTable;
+import org.ovirt.engine.ui.common.widget.table.column.PermissionTypeColumn;
 import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
 import org.ovirt.engine.ui.uicommonweb.UICommand;
 import org.ovirt.engine.ui.webadmin.ApplicationConstants;
@@ -22,10 +24,15 @@
 
 public class SharedMacPoolView extends Composite {
 
+    private final MacPoolPermissionModelProvider 
macPoolPermissionModelProvider;
+    private final SharedMacPoolModelProvider sharedMacPoolModelProvider;
+
     private final SimpleActionTable<MacPool> macPoolTable;
+    private final SimpleActionTable<Permissions> authorizationTable;
 
     @Inject
     public SharedMacPoolView(final SharedMacPoolModelProvider 
sharedMacPoolModelProvider,
+            final MacPoolPermissionModelProvider 
macPoolPermissionModelProvider,
             final EventBus eventBus,
             final ClientStorage clientStorage,
             final MainTableHeaderlessResources headerlessResources,
@@ -33,12 +40,33 @@
             final ApplicationConstants constants,
             final ApplicationResources resources) {
 
-        SplitLayoutPanel rootPanel = createRootPanel();
-        this.macPoolTable = createMacPoolTable(sharedMacPoolModelProvider, 
eventBus, clientStorage, headerlessResources,
+        this.sharedMacPoolModelProvider = sharedMacPoolModelProvider;
+        this.macPoolPermissionModelProvider = macPoolPermissionModelProvider;
+
+        macPoolTable = createMacPoolTable(sharedMacPoolModelProvider, 
eventBus, clientStorage, headerlessResources,
                 tableResources, constants, resources);
 
+        authorizationTable = 
createAuthorizationTable(sharedMacPoolModelProvider, eventBus, clientStorage, 
headerlessResources,
+                tableResources, constants, resources);
+        authorizationTable.setVisible(false);
+
+        SplitLayoutPanel rootPanel = createRootPanel();
+        rootPanel.addSouth(authorizationTable, 150);
         rootPanel.add(macPoolTable);
+
+        bind();
+
         initWidget(rootPanel);
+    }
+
+    private void bind() {
+        macPoolTable.getSelectionModel().addSelectionChangeHandler(new 
SelectionChangeEvent.Handler() {
+            @Override
+            public void onSelectionChange(SelectionChangeEvent 
selectionChangeEvent) {
+                final boolean isAnyPoolSelected = 
macPoolTable.getSelectionModel().getSelectedList().size() > 0;
+                authorizationTable.setVisible(isAnyPoolSelected);
+            }
+        });
     }
 
     protected SplitLayoutPanel createRootPanel() {
@@ -57,7 +85,7 @@
             final ApplicationResources resources) {
 
         final SimpleActionTable<MacPool> macPoolTable =
-                new SimpleActionTable<MacPool>(sharedMacPoolModelProvider,
+                new SimpleActionTable<MacPool>(this.sharedMacPoolModelProvider,
                         headerlessResources,
                         tableResources,
                         eventBus,
@@ -83,11 +111,13 @@
                 return macPool.getDescription();
             }
         }, constants.configureMacPoolDescriptionColumn(), "300px"); 
//$NON-NLS-1$
+
+
         macPoolTable.addActionButton(new 
WebAdminButtonDefinition<MacPool>(constants.configureMacPoolAddButton()) {
 
             @Override
             protected UICommand resolveCommand() {
-                return sharedMacPoolModelProvider.getModel().getNewCommand();
+                return 
SharedMacPoolView.this.sharedMacPoolModelProvider.getModel().getNewCommand();
             }
         });
 
@@ -95,25 +125,92 @@
 
             @Override
             protected UICommand resolveCommand() {
-                return sharedMacPoolModelProvider.getModel().getEditCommand();
+                return 
SharedMacPoolView.this.sharedMacPoolModelProvider.getModel().getEditCommand();
             }
         });
         macPoolTable.addActionButton(new 
WebAdminButtonDefinition<MacPool>(constants.configureMacPoolRemoveButton()) {
 
             @Override
             protected UICommand resolveCommand() {
-                return 
sharedMacPoolModelProvider.getModel().getRemoveCommand();
+                return 
SharedMacPoolView.this.sharedMacPoolModelProvider.getModel().getRemoveCommand();
             }
         });
+
+
         macPoolTable.getSelectionModel().addSelectionChangeHandler(new 
SelectionChangeEvent.Handler() {
 
             @Override
             public void onSelectionChange(SelectionChangeEvent event) {
-                
sharedMacPoolModelProvider.setSelectedItems(macPoolTable.getSelectedItems());
+                
SharedMacPoolView.this.sharedMacPoolModelProvider.setSelectedItems(macPoolTable.getSelectedItems());
             }
         });
 
         return macPoolTable;
     }
 
+    //TODO MM: remove duplicity with 
org.ovirt.engine.ui.webadmin.section.main.view.popup.configure.SystemPermissionView.initTable()
+    private SimpleActionTable<Permissions> createAuthorizationTable(final 
SharedMacPoolModelProvider sharedMacPoolModelProvider,
+            final EventBus eventBus,
+            final ClientStorage clientStorage,
+            final MainTableHeaderlessResources headerlessResources,
+            final MainTableResources tableResources,
+            final ApplicationConstants constants,
+            final ApplicationResources resources) {
+
+        SimpleActionTable<Permissions> permissionsTable = new 
SimpleActionTable<Permissions>(macPoolPermissionModelProvider,
+                headerlessResources,
+                tableResources,
+                eventBus,
+                clientStorage);
+        permissionsTable.addColumn(new PermissionTypeColumn(), 
constants.empty(), "30px"); //$NON-NLS-1$
+
+        TextColumnWithTooltip<Permissions> userColumn = new 
TextColumnWithTooltip<Permissions>() {
+            @Override
+            public String getValue(Permissions object) {
+                return object.getOwnerName();
+            }
+        };
+        permissionsTable.addColumn(userColumn, constants.userPermission(), 
"300px"); //$NON-NLS-1$
+
+        TextColumnWithTooltip<Permissions> namespaceColumn = new 
TextColumnWithTooltip<Permissions>() {
+            @Override
+            public String getValue(Permissions object) {
+                return object.getNamespace();
+            }
+        };
+        permissionsTable.addColumn(namespaceColumn, constants.namespace(), 
"200px"); //$NON-NLS-1$
+
+        TextColumnWithTooltip<Permissions> authzColumn = new 
TextColumnWithTooltip<Permissions>() {
+            @Override
+            public String getValue(Permissions object) {
+                return object.getAuthz();
+            }
+        };
+        permissionsTable.addColumn(authzColumn, constants.authz(), "200px"); 
//$NON-NLS-1$
+
+        TextColumnWithTooltip<Permissions> roleColumn = new 
TextColumnWithTooltip<Permissions>() {
+            @Override
+            public String getValue(Permissions object) {
+                return object.getRoleName();
+            }
+        };
+        permissionsTable.addColumn(roleColumn, constants.rolePermission());
+
+        permissionsTable.addActionButton(new 
WebAdminButtonDefinition<Permissions>(constants.addPermission()) {
+            @Override
+            protected UICommand resolveCommand() {
+                return 
macPoolPermissionModelProvider.getModel().getAddCommand();
+            }
+        });
+
+        permissionsTable.addActionButton(new 
WebAdminButtonDefinition<Permissions>(constants.removePermission()) {
+            @Override
+            protected UICommand resolveCommand() {
+                return 
macPoolPermissionModelProvider.getModel().getRemoveCommand();
+            }
+        });
+
+        return permissionsTable;
+    }
+
 }


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Idb6b442e7eebce367b9008f4b9c1df9ade84745f
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Martin Mucha <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to