+ markAsWorkgroupLk.addSelectionListener(new SelectionAdapter() {
+ private static final long serialVersionUID = -6439340898096365078L;
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+
+ boolean confirmed = MessageDialog.openConfirm(parent.getShell(), "Mark as workgroup",
+ "Are you sure you want to mark " + cn + " as being a workgroup? ");
+ if (confirmed) {
+ Node workgroupHome = NodeUtils.getGroupHome(session, cn);
+ if (workgroupHome != null)
+ // already marked as workgroup, do nothing
+ return;
+ else {
+ // Insure the session is clean to enable rollback
+ try {
+ if (session.hasPendingChanges())
+ MessageDialog.openError(getSite().getShell(), "Cannot create home group home",
+ "The current session is dirty. Please save and try again.");
+ } catch (RepositoryException e2) {
+ throw new CmsException("Cannot check session state", e2);
+ }
+ try {
+ // FIXME hardcoded base path
+ String relPath = generateWorkgroupHomeRelPath(cn);
+ Node newHome = JcrUtils.mkdirs(session.getNode("/groups"), relPath,
+ NodeType.NT_UNSTRUCTURED);
+ newHome.addMixin(NodeTypes.NODE_GROUP_HOME);
+ newHome.setProperty(NodeNames.LDAP_CN, cn);
+ session.save();
+ JcrUtils.addPrivilege(session, newHome.getPath(), group.getName(), Privilege.JCR_ALL);
+ session.save();
+ } catch (RepositoryException e2) {
+ JcrUtils.discardQuietly(session);
+ throw new CmsException("Cannot check session state", e2);
+ }
+ }
+ }
+ }
+ });
+
+ // ModifyListener defaultListener = editor.new FormPartML(part);
+ // descTxt.addModifyListener(defaultListener);