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;
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;
ContentSession contentSession = ((ProvidedContent) context).getSession();
TabularPart<Content, Content> membersPart = new AbstractTabularPart<Content, Content>() {
- Role[] roles = context.adapt(CmsGroup.class).getMembers();
+ Role[] roles;
@Override
public int getItemCount() {
+ roles = context.adapt(CmsGroup.class).getMembers();
return roles.length;
}
ToolItem addItem = new ToolItem(toolBar, SWT.FLAT);
addItem.setImage(theme.getSmallIcon(SuiteIcon.add));
+ addItem.setEnabled(CurrentUser.implies(CmsRole.groupAdmin, hierarchyUnit.getBase()));
+
+ // members view
+ SwtTableView<Content, Content> 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<Content, Content> membersView = new SwtTableView<>(area, SWT.BORDER, membersPart);
- membersView.setLayoutData(CmsSwtUtils.fillAll());
- membersView.refresh();
return membersView;
}