diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java index 6a73c14960d..51b5bcf308e 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java @@ -1960,4 +1960,6 @@ public interface CommonApplicationConstants extends Constants { String configChangesPending(); String permissionFilter(); + + String propertyId(); } diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/users/UserSettingsModelTable.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/users/UserSettingsModelTable.java new file mode 100644 index 00000000000..3a325be32ea --- /dev/null +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/users/UserSettingsModelTable.java @@ -0,0 +1,66 @@ +package org.ovirt.engine.ui.common.widget.uicommon.users; + +import org.ovirt.engine.core.common.businessentities.UserProfileProperty; +import org.ovirt.engine.core.common.businessentities.aaa.DbUser; +import org.ovirt.engine.ui.common.CommonApplicationConstants; +import org.ovirt.engine.ui.common.gin.AssetProvider; +import org.ovirt.engine.ui.common.presenter.DetailActionPanelPresenterWidget; +import org.ovirt.engine.ui.common.system.ClientStorage; +import org.ovirt.engine.ui.common.uicommon.model.SearchableTableModelProvider; +import org.ovirt.engine.ui.common.widget.table.column.AbstractTextColumn; +import org.ovirt.engine.ui.common.widget.uicommon.AbstractModelBoundTableWidget; +import org.ovirt.engine.ui.uicommonweb.models.users.UserListModel; +import org.ovirt.engine.ui.uicommonweb.models.users.UserSettingsModel; + +import com.google.gwt.event.shared.EventBus; + +public class UserSettingsModelTable extends AbstractModelBoundTableWidget { + + private static final CommonApplicationConstants constants = AssetProvider.getConstants(); + + public UserSettingsModelTable(SearchableTableModelProvider modelProvider, + EventBus eventBus, + DetailActionPanelPresenterWidget actionPanel, + ClientStorage clientStorage) { + super(modelProvider, eventBus, actionPanel, clientStorage, false); + } + + @Override + public void initTable() { + getTable().enableColumnResizing(); + + AbstractTextColumn nameColumn = new AbstractTextColumn() { + @Override + public String getValue(UserProfileProperty property) { + return property.getName(); + } + }; + nameColumn.makeSortable(); + getTable().addColumn(nameColumn, constants.name(), "200px"); //$NON-NLS-1$ + + AbstractTextColumn idColumn = new AbstractTextColumn() { + @Override + public String getValue(UserProfileProperty property) { + return property.getPropertyId().toString(); + } + }; + getTable().addColumn(idColumn, constants.propertyId(), "250px"); //$NON-NLS-1$ + + AbstractTextColumn typeColumn = new AbstractTextColumn() { + @Override + public String getValue(UserProfileProperty property) { + return property.getType().name(); + } + }; + typeColumn.makeSortable(); + getTable().addColumn(typeColumn, constants.typePermission(), "110px"); //$NON-NLS-1$ + + AbstractTextColumn contentColumn = new AbstractTextColumn() { + @Override + public String getValue(UserProfileProperty property) { + return property.getContent(); + } + }; + getTable().addColumn(contentColumn, constants.contentDisk(), "50%"); //$NON-NLS-1$ + } +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants.properties b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants.properties index 09f197e21a7..42536097a6b 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants.properties +++ b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/ui/common/CommonApplicationConstants.properties @@ -607,6 +607,7 @@ profileDescriptionLabel=Description profileNameInterface=Profile Name profileNameLabel=Name profileNetworkInterfacePopup=Profile +propertyId=Property ID providerLabel=Provider provisionedSizeDisk=Virtual Size provisionedSizeVmDiskTable=Virtual Size diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserListModel.java index 812b7a8a76e..7d8ba296385 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserListModel.java @@ -76,6 +76,8 @@ private void setAssignTagsCommand(UICommand value) { privateAssignTagsCommand = value; } + + private final UserSettingsModel userSettingsModel; private final UserGroupListModel groupListModel; private final UserEventNotifierListModel eventNotifierListModel; private final UserGeneralModel generalModel; @@ -89,7 +91,8 @@ public UserListModel(final UserGroupListModel userGroupListModel, final UserGeneralModel userGeneralModel, final UserQuotaListModel userQuotaListModel, final UserPermissionListModel userPermissionListModel, - final UserEventListModel userEventListModel) { + final UserEventListModel userEventListModel, + final UserSettingsModel userSettingsModel) { setIsTimerDisabled(true); this.groupListModel = userGroupListModel; this.eventNotifierListModel = userEventNotifierListModel; @@ -97,6 +100,7 @@ public UserListModel(final UserGroupListModel userGroupListModel, this.permissionListModel = userPermissionListModel; this.quotaListModel = userQuotaListModel; this.eventListModel = userEventListModel; + this.userSettingsModel = userSettingsModel; setDetailList(); setTitle(ConstantsManager.getInstance().getConstants().usersTitle()); setApplicationPlace(WebAdminApplicationPlaces.userMainPlace); @@ -118,6 +122,7 @@ public UserListModel(final UserGroupListModel userGroupListModel, private void setDetailList() { List> list = new ArrayList<>(); list.add(generalModel); + list.add(userSettingsModel); list.add(quotaListModel); list.add(permissionListModel); list.add(eventListModel); @@ -567,4 +572,7 @@ public UserEventListModel getEventListModel() { return eventListModel; } + public UserSettingsModel getUserSettingsModel() { + return userSettingsModel; + } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserSettingsModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserSettingsModel.java new file mode 100644 index 00000000000..d87642d1b62 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/users/UserSettingsModel.java @@ -0,0 +1,121 @@ +package org.ovirt.engine.ui.uicommonweb.models.users; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Consumer; + +import org.ovirt.engine.core.common.businessentities.UserProfileProperty; +import org.ovirt.engine.core.common.businessentities.aaa.DbUser; +import org.ovirt.engine.core.common.queries.QueryType; +import org.ovirt.engine.core.common.queries.UserProfilePropertyIdQueryParameters; +import org.ovirt.engine.ui.frontend.Frontend; +import org.ovirt.engine.ui.frontend.NotificationStatus; +import org.ovirt.engine.ui.frontend.UserProfileManager; +import org.ovirt.engine.ui.uicommonweb.BaseCommandTarget; +import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel; +import org.ovirt.engine.ui.uicompat.ConstantsManager; +import org.ovirt.engine.ui.uicompat.UIConstants; + +public class UserSettingsModel extends SearchableListModel { + + private static final UIConstants constants = ConstantsManager.getInstance().getConstants(); + + private final UICommand removeCommand; + + public UserSettingsModel() { + setTitle(ConstantsManager.getInstance().getConstants().accountSettings()); + setHashName("user_settings"); //$NON-NLS-1$ + + removeCommand = new UICommand("Remove", new BaseCommandTarget() {//$NON-NLS-1$ + @Override + public void executeCommand(UICommand uiCommand) { + removeUserProfileProperty(); + } + }); + + updateActionAvailability(); + } + + private void removeUserProfileProperty() { + List selected = getSelectedItems(); + if (selected == null || selected.isEmpty()) { + return; + } + + List results = new ArrayList<>(); + Consumer markAsDone = result -> { + results.add(result); + if (results.size() >= selected.size()) { + syncSearch(); + } + }; + + for (UserProfileProperty prop : selected) { + Frontend.getInstance() + .getUserProfileManager() + .deleteProperty( + prop, + property -> markAsDone.accept(true), + error -> { + String validationMessage = + String.join("\n", error.getReturnValue().getValidationMessages()); //$NON-NLS-1$ + String faultMessage = error.getReturnValue().getFault().getMessage(); + String toastMessage = error.getReturnValue().isValid() ? faultMessage + : validationMessage.isEmpty() ? constants.noValidateMessage() + : validationMessage; + Frontend.getInstance() + .showToast( + toastMessage, + NotificationStatus.DANGER); + markAsDone.accept(false); + }, + (remote, local) -> UserProfileManager.BaseConflictResolutionStrategy.REPORT_ERROR, + this, + false); + } + } + + private void updateActionAvailability() { + getRemoveCommand().setIsExecutionAllowed(getSelectedItems() != null && getSelectedItems().size() > 0); + } + + public UICommand getRemoveCommand() { + return removeCommand; + } + + @Override + protected String getListName() { + return "UserSettingsModel"; //$NON-NLS-1$ + } + + @Override + protected void onEntityChanged() { + super.onEntityChanged(); + + getSearchCommand().execute(); + updateActionAvailability(); + } + + @Override + protected void syncSearch() { + DbUser user = getEntity(); + if (user != null) { + super.syncSearch(QueryType.GetUserProfilePropertiesByUserId, + new UserProfilePropertyIdQueryParameters(user.getId(), null)); + } + } + + @Override + protected void onSelectedItemChanged() { + super.onSelectedItemChanged(); + updateActionAvailability(); + } + + @Override + protected void selectedItemsChanged() { + super.selectedItemsChanged(); + updateActionAvailability(); + } + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/place/WebAdminApplicationPlaces.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/place/WebAdminApplicationPlaces.java index b6bb5459c1f..148e9533ddb 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/place/WebAdminApplicationPlaces.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/place/WebAdminApplicationPlaces.java @@ -127,6 +127,7 @@ public final class WebAdminApplicationPlaces { // User public static final String userGeneralSubTabPlace = userMainPlace + SUB_TAB_PREFIX + "general"; //$NON-NLS-1$ + public static final String userSettingsSubTabPlace= userMainPlace + SUB_TAB_PREFIX + "settings"; //$NON-NLS-1$ public static final String userQuotaSubTabPlace = userMainPlace + SUB_TAB_PREFIX + "quota"; //$NON-NLS-1$ public static final String userGroupSubTabPlace = userMainPlace + SUB_TAB_PREFIX + "directory_groups"; //$NON-NLS-1$ public static final String userEventNotifierSubTabPlace = userMainPlace + SUB_TAB_PREFIX + "event_notifier"; //$NON-NLS-1$ diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java index ec9b81ae2b6..d909f89e768 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java @@ -17,6 +17,7 @@ import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StorageDomainDR; import org.ovirt.engine.core.common.businessentities.StoragePool; +import org.ovirt.engine.core.common.businessentities.UserProfileProperty; import org.ovirt.engine.core.common.businessentities.UserSession; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VM; @@ -365,6 +366,7 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.user.SubTabUserGroupPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.user.SubTabUserPermissionPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.user.SubTabUserQuotaPresenter; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.user.SubTabUserSettingsPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.user.UserSubTabPanelPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.virtualMachine.SubTabVirtualMachineAffinityGroupPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.virtualMachine.SubTabVirtualMachineAffinityLabelPresenter; @@ -653,6 +655,7 @@ import org.ovirt.engine.ui.webadmin.section.main.view.tab.user.SubTabUserGroupView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.user.SubTabUserPermissionView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.user.SubTabUserQuotaView; +import org.ovirt.engine.ui.webadmin.section.main.view.tab.user.SubTabUserSettingsView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.user.UserSubTabPanelView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.virtualMachine.SubTabVirtualMachineAffinityGroupView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.virtualMachine.SubTabVirtualMachineAffinityLabelView; @@ -1239,6 +1242,10 @@ protected void configure() { SubTabUserGeneralPresenter.ViewDef.class, SubTabUserGeneralView.class, SubTabUserGeneralPresenter.ProxyDef.class); + bindPresenter(SubTabUserSettingsPresenter.class, + SubTabUserSettingsPresenter.ViewDef.class, + SubTabUserSettingsView.class, + SubTabUserSettingsPresenter.ProxyDef.class); bindPresenter(SubTabUserPermissionPresenter.class, SubTabUserPermissionPresenter.ViewDef.class, SubTabUserPermissionView.class, @@ -1271,6 +1278,8 @@ protected void configure() { new TypeLiteral>(){}); bindActionPanel(new TypeLiteral>(){}, new TypeLiteral>(){}); + bindActionPanel(new TypeLiteral>(){}, + new TypeLiteral>(){}); // Quota bindPresenter(QuotaSubTabPanelPresenter.class, diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/UserModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/UserModule.java index aaeb6916f64..20a2299aeb8 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/UserModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/UserModule.java @@ -4,6 +4,7 @@ import org.ovirt.engine.core.common.businessentities.EventSubscriber; import org.ovirt.engine.core.common.businessentities.Permission; import org.ovirt.engine.core.common.businessentities.Quota; +import org.ovirt.engine.core.common.businessentities.UserProfileProperty; import org.ovirt.engine.core.common.businessentities.aaa.DbUser; import org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget; import org.ovirt.engine.ui.common.presenter.popup.DefaultConfirmationPopupPresenterWidget; @@ -26,6 +27,7 @@ import org.ovirt.engine.ui.uicommonweb.models.users.UserListModel; import org.ovirt.engine.ui.uicommonweb.models.users.UserPermissionListModel; import org.ovirt.engine.ui.uicommonweb.models.users.UserQuotaListModel; +import org.ovirt.engine.ui.uicommonweb.models.users.UserSettingsModel; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.AssignTagsPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.PermissionsPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.event.EventPopupPresenterWidget; @@ -173,6 +175,20 @@ public SearchableDetailModelProvider getUseSettingsModelProvider( + EventBus eventBus, + Provider defaultConfirmPopupProvider, + final Provider mainModelProvider, + final Provider modelProvider) { + SearchableDetailTabModelProvider result = + new SearchableDetailTabModelProvider<>(eventBus, defaultConfirmPopupProvider); + result.setMainModelProvider(mainModelProvider); + result.setModelProvider(modelProvider); + return result; + } + @Override protected void configure() { bind(UserListModel.class).in(Singleton.class); @@ -182,6 +198,7 @@ protected void configure() { bind(UserQuotaListModel.class).in(Singleton.class); bind(UserEventListModel.class).in(Singleton.class); bind(UserGroupListModel.class).in(Singleton.class); + bind(UserSettingsModel.class).in(Singleton.class); bind(UserMainSelectedItems.class).asEagerSingleton(); // Form Detail Models diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/DetailTabDataIndex.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/DetailTabDataIndex.java index a0488125888..a025d076dc1 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/DetailTabDataIndex.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/DetailTabDataIndex.java @@ -270,14 +270,16 @@ public final class DetailTabDataIndex { public static final TabData USER_GENERAL = new GroupedTabData(constants.userGeneralSubTabLabel(), 0); //$NON-NLS-1$ - public static final TabData USER_PERMISSION = new GroupedTabData(constants.userPermissionSubTabLabel(), 1); //$NON-NLS-1$ + public static final TabData USER_SETTINGS = new GroupedTabData(constants.accountSettings(), 1); //$NON-NLS-1$ - public static final TabData USER_QUOTA = new GroupedTabData(constants.userQuotaSubTabLabel(), 2); //$NON-NLS-1$ + public static final TabData USER_PERMISSION = new GroupedTabData(constants.userPermissionSubTabLabel(), 2); //$NON-NLS-1$ - public static final TabData USER_GROUP = new GroupedTabData(constants.userGroupsSubTabLabel(), 3); //$NON-NLS-1$ + public static final TabData USER_QUOTA = new GroupedTabData(constants.userQuotaSubTabLabel(), 3); //$NON-NLS-1$ - public static final TabData USER_EVENT_NOTIFIER = new GroupedTabData(constants.userEventNotifierSubTabLabel(), 4); //$NON-NLS-1$ + public static final TabData USER_GROUP = new GroupedTabData(constants.userGroupsSubTabLabel(), 4); //$NON-NLS-1$ - public static final TabData USER_EVENT = new GroupedTabData(constants.userEventSubTabLabel(), 5); //$NON-NLS-1$ + public static final TabData USER_EVENT_NOTIFIER = new GroupedTabData(constants.userEventNotifierSubTabLabel(), 5); //$NON-NLS-1$ + + public static final TabData USER_EVENT = new GroupedTabData(constants.userEventSubTabLabel(), 6); //$NON-NLS-1$ } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/user/SubTabUserSettingsPresenter.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/user/SubTabUserSettingsPresenter.java new file mode 100644 index 00000000000..0f7aab8c83f --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/user/SubTabUserSettingsPresenter.java @@ -0,0 +1,47 @@ +package org.ovirt.engine.ui.webadmin.section.main.presenter.tab.user; + +import org.ovirt.engine.core.common.businessentities.UserProfileProperty; +import org.ovirt.engine.core.common.businessentities.aaa.DbUser; +import org.ovirt.engine.ui.common.presenter.AbstractSubTabPresenter; +import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; +import org.ovirt.engine.ui.uicommonweb.models.users.UserListModel; +import org.ovirt.engine.ui.uicommonweb.models.users.UserSettingsModel; +import org.ovirt.engine.ui.uicommonweb.place.WebAdminApplicationPlaces; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.DetailTabDataIndex; +import org.ovirt.engine.ui.webadmin.section.main.view.tab.user.SubTabUserSettingsView; + +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; +import com.gwtplatform.mvp.client.TabData; +import com.gwtplatform.mvp.client.annotations.NameToken; +import com.gwtplatform.mvp.client.annotations.ProxyCodeSplit; +import com.gwtplatform.mvp.client.annotations.TabInfo; +import com.gwtplatform.mvp.client.proxy.PlaceManager; +import com.gwtplatform.mvp.client.proxy.TabContentProxyPlace; + +public class SubTabUserSettingsPresenter + extends AbstractSubTabUserPresenter { + + @ProxyCodeSplit + @NameToken(WebAdminApplicationPlaces.userSettingsSubTabPlace) + public interface ProxyDef extends TabContentProxyPlace { + } + + public interface ViewDef extends AbstractSubTabPresenter.ViewDef { + } + + @TabInfo(container = UserSubTabPanelPresenter.class) + static TabData getTabData() { + return DetailTabDataIndex.USER_SETTINGS; + } + + @Inject + public SubTabUserSettingsPresenter(EventBus eventBus, SubTabUserSettingsView view, SubTabUserSettingsPresenter.ProxyDef proxy, + PlaceManager placeManager, UserMainSelectedItems selectedItems, + SearchableDetailModelProvider modelProvider) { + super(eventBus, view, proxy, placeManager, modelProvider, selectedItems, null, + UserSubTabPanelPresenter.TYPE_SetTabContent); + } + +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/user/UserSubTabPanelPresenter.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/user/UserSubTabPanelPresenter.java index 46091904b6c..9c9b4bb77d2 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/user/UserSubTabPanelPresenter.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/user/UserSubTabPanelPresenter.java @@ -53,6 +53,7 @@ public UserSubTabPanelPresenter(EventBus eventBus, ViewDef view, ProxyDef proxy, protected void initDetailTabToModelMapping(Map mapping) { UserListModel mainModel = modelProvider.getModel(); mapping.put(DetailTabDataIndex.USER_GENERAL, mainModel.getGeneralModel()); + mapping.put(DetailTabDataIndex.USER_SETTINGS, mainModel.getUserSettingsModel()); mapping.put(DetailTabDataIndex.USER_PERMISSION, mainModel.getPermissionListModel()); mapping.put(DetailTabDataIndex.USER_QUOTA, mainModel.getQuotaListModel()); mapping.put(DetailTabDataIndex.USER_GROUP, mainModel.getGroupListModel()); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserSettingsView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserSettingsView.java new file mode 100644 index 00000000000..220895d8255 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/SubTabUserSettingsView.java @@ -0,0 +1,32 @@ +package org.ovirt.engine.ui.webadmin.section.main.view.tab.user; + +import org.ovirt.engine.core.common.businessentities.UserProfileProperty; +import org.ovirt.engine.core.common.businessentities.aaa.DbUser; +import org.ovirt.engine.ui.common.system.ClientStorage; +import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; +import org.ovirt.engine.ui.common.view.AbstractSubTabTableWidgetView; +import org.ovirt.engine.ui.common.widget.uicommon.users.UserSettingsModelTable; +import org.ovirt.engine.ui.uicommonweb.models.users.UserListModel; +import org.ovirt.engine.ui.uicommonweb.models.users.UserSettingsModel; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.user.SubTabUserSettingsPresenter; + +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; + +public class SubTabUserSettingsView extends AbstractSubTabTableWidgetView implements SubTabUserSettingsPresenter.ViewDef { + + @Inject + public SubTabUserSettingsView( + SearchableDetailModelProvider modelProvider, + EventBus eventBus, + UserSettingsActionPanel actionPanel, + ClientStorage clientStorage) { + super(new UserSettingsModelTable(modelProvider, + eventBus, + actionPanel, + clientStorage)); + initTable(); + initWidget(getModelBoundTableWidget()); + } + +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/UserSettingsActionPanel.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/UserSettingsActionPanel.java new file mode 100644 index 00000000000..b3522b7245a --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/user/UserSettingsActionPanel.java @@ -0,0 +1,39 @@ +package org.ovirt.engine.ui.webadmin.section.main.view.tab.user; + +import org.ovirt.engine.core.common.businessentities.UserProfileProperty; +import org.ovirt.engine.core.common.businessentities.aaa.DbUser; +import org.ovirt.engine.ui.common.CommonApplicationConstants; +import org.ovirt.engine.ui.common.gin.AssetProvider; +import org.ovirt.engine.ui.common.presenter.DetailActionPanelPresenterWidget; +import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; +import org.ovirt.engine.ui.common.widget.action.UiCommandButtonDefinition; +import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.models.users.UserListModel; +import org.ovirt.engine.ui.uicommonweb.models.users.UserSettingsModel; + +import com.google.inject.Inject; + +class UserSettingsActionPanel extends DetailActionPanelPresenterWidget { + + private static final CommonApplicationConstants constants = AssetProvider.getConstants(); + + @Inject + public UserSettingsActionPanel(com.google.web.bindery.event.shared.EventBus eventBus, + DetailActionPanelPresenterWidget.ViewDef view, + SearchableDetailModelProvider dataProvider) { + super(eventBus, view, dataProvider); + } + + @Override + protected void initializeButtons() { + + addActionButton(new UiCommandButtonDefinition(getSharedEventBus(), + constants.removeProfile()) { + @Override + protected UICommand resolveCommand() { + return getDetailModel().getRemoveCommand(); + } + }); + + } +}