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
