- String title;
- if (context.hasContentClass(LdapObj.organization))
- title = SuiteMsg.org.lead() + " " + context.attr(LdapAttr.cn) + " ("
- + hierarchyUnit.getHierarchyUnitLabel(CurrentUser.locale()) + ")";
- else
- title = SuiteMsg.group.lead() + " " + context.attr(LdapAttr.cn) + " ("
- + hierarchyUnit.getHierarchyUnitLabel(CurrentUser.locale()) + ")";
- SuiteUiUtils.addFormLabel(parent, title);
-
- for (Role member : group.getMembers()) {
- new Label(parent, 0).setText(member.getName());
- }
- return null;
+ String title = (context.hasContentClass(LdapObj.organization) ? SuiteMsg.org.lead() : SuiteMsg.group.lead())
+ + " " + LdapAcrUtils.getLocalized(context, LdapAttr.cn.qName(), CurrentUser.locale()) + " ("
+ + hierarchyUnit.getHierarchyUnitLabel(CurrentUser.locale()) + ")";
+ SuiteUiUtils.addFormLabel(area, title);
+
+ // toolbar
+ ToolBar toolBar = new ToolBar(area, SWT.NONE);
+ toolBar.setLayoutData(new GridData(SWT.END, SWT.FILL, true, false));
+
+ ToolItem deleteItem = new ToolItem(toolBar, SWT.FLAT);
+ deleteItem.setEnabled(false);
+ deleteItem.setImage(theme.getSmallIcon(SuiteIcon.delete));
+
+ 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();
+ 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();
+ }
+ });
+
+ return membersView;