X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=swt%2Forg.argeo.app.ui%2Fsrc%2Forg%2Fargeo%2Fapp%2Fui%2Fpeople%2FGroupUiProvider.java;h=25a72584dce442aedabf6154c4661712a6d83842;hb=c27f28501458ac3be0bc85a78116d136569f148c;hp=8cf24f00c0e7851cd0160be65ef751b96b2e5a4f;hpb=302839c70d637be5a555290bd4542b9b1c63c17d;p=gpl%2Fargeo-suite.git diff --git a/swt/org.argeo.app.ui/src/org/argeo/app/ui/people/GroupUiProvider.java b/swt/org.argeo.app.ui/src/org/argeo/app/ui/people/GroupUiProvider.java index 8cf24f0..25a7258 100644 --- a/swt/org.argeo.app.ui/src/org/argeo/app/ui/people/GroupUiProvider.java +++ b/swt/org.argeo.app.ui/src/org/argeo/app/ui/people/GroupUiProvider.java @@ -6,6 +6,7 @@ import org.argeo.api.acr.ldap.LdapAttr; import org.argeo.api.acr.ldap.LdapObj; import org.argeo.api.acr.spi.ProvidedContent; import org.argeo.api.cms.directory.CmsGroup; +import org.argeo.api.cms.directory.CmsUser; import org.argeo.api.cms.directory.CmsUserManager; import org.argeo.api.cms.directory.HierarchyUnit; import org.argeo.app.ui.SuiteIcon; @@ -13,6 +14,7 @@ import org.argeo.app.ui.SuiteMsg; import org.argeo.app.ui.SuiteUiUtils; import org.argeo.cms.CurrentUser; import org.argeo.cms.acr.ContentUtils; +import org.argeo.cms.auth.CmsRole; import org.argeo.cms.swt.CmsSwtTheme; import org.argeo.cms.swt.CmsSwtUtils; import org.argeo.cms.swt.Selected; @@ -44,10 +46,11 @@ public class GroupUiProvider implements SwtUiProvider { ContentSession contentSession = ((ProvidedContent) context).getSession(); TabularPart membersPart = new AbstractTabularPart() { - Role[] roles = context.adapt(CmsGroup.class).getMembers(); + Role[] roles; @Override public int getItemCount() { + roles = context.adapt(CmsGroup.class).getMembers(); return roles.length; } @@ -87,19 +90,37 @@ public class GroupUiProvider implements SwtUiProvider { ToolItem addItem = new ToolItem(toolBar, SWT.FLAT); addItem.setImage(theme.getSmallIcon(SuiteIcon.add)); + addItem.setEnabled(CurrentUser.implies(CmsRole.groupAdmin, hierarchyUnit.getBase())); + + // members view + SwtTableView membersView = new SwtTableView<>(area, SWT.BORDER, membersPart); + membersView.setLayoutData(CmsSwtUtils.fillAll()); + membersView.refresh(); + + // CONTROLLER + membersPart.onSelected((model) -> { + deleteItem.setEnabled(CurrentUser.implies(CmsRole.groupAdmin, hierarchyUnit.getBase())); + deleteItem.setData(model); + }); + addItem.addSelectionListener((Selected) (e) -> { ChooseUserDialog chooseUserDialog = new ChooseUserDialog(parent.getDisplay().getActiveShell(), SuiteMsg.chooseAMember.lead(), contentSession, cmsUserManager, hierarchyUnit); if (chooseUserDialog.open() == CmsDialog.OK) { Content chosen = chooseUserDialog.getSelected(); - // TODO add + cmsUserManager.addMember(context.adapt(CmsGroup.class), chosen.adapt(CmsUser.class)); + membersPart.refresh(); + } + }); + + deleteItem.addSelectionListener((Selected) (e) -> { + if (deleteItem.getData() != null) { + Content chosen = (Content) deleteItem.getData(); + cmsUserManager.removeMember(context.adapt(CmsGroup.class), chosen.adapt(CmsUser.class)); + membersPart.refresh(); } }); - // members view - SwtTableView membersView = new SwtTableView<>(area, SWT.BORDER, membersPart); - membersView.setLayoutData(CmsSwtUtils.fillAll()); - membersView.refresh(); return membersView; }