X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.ui.admin%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Fcommands%2FNewGroup.java;fp=org.argeo.security.ui.admin%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Fcommands%2FNewGroup.java;h=d752bd1b2d0e8dd553330699c4ad2847a6ae34e1;hb=cd2948994931fcb43283ffb30c1058d5860dec68;hp=d797c5d748fae47b1c09b59a63009acc0c259466;hpb=563ee18b53fa90f14dc3f443f29f6d020ffdee2b;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/commands/NewGroup.java b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/commands/NewGroup.java index d797c5d74..d752bd1b2 100644 --- a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/commands/NewGroup.java +++ b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/commands/NewGroup.java @@ -17,19 +17,16 @@ package org.argeo.security.ui.admin.commands; import java.util.Dictionary; -import javax.transaction.UserTransaction; - import org.argeo.eclipse.ui.EclipseUiUtils; import org.argeo.eclipse.ui.dialogs.ErrorFeedback; import org.argeo.jcr.ArgeoNames; import org.argeo.security.ui.admin.SecurityAdminPlugin; import org.argeo.security.ui.admin.internal.UiAdminUtils; import org.argeo.security.ui.admin.internal.UserAdminConstants; -import org.argeo.security.ui.admin.views.GroupsView; +import org.argeo.security.ui.admin.internal.UserAdminWrapper; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; -import org.eclipse.jface.window.Window; import org.eclipse.jface.wizard.Wizard; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.jface.wizard.WizardPage; @@ -41,20 +38,19 @@ import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.handlers.HandlerUtil; import org.osgi.service.useradmin.Group; import org.osgi.service.useradmin.Role; import org.osgi.service.useradmin.UserAdmin; +import org.osgi.service.useradmin.UserAdminEvent; /** Create a new group. */ public class NewGroup extends AbstractHandler { public final static String ID = SecurityAdminPlugin.PLUGIN_ID + ".newGroup"; + /* DEPENDENCY INJECTION */ + private UserAdminWrapper userAdminWrapper; private UserAdmin userAdmin; - private UserTransaction userTransaction; // TODO implement a dynamic choice of the base dn private String getDn(String cn) { @@ -66,23 +62,10 @@ public class NewGroup extends AbstractHandler { WizardDialog dialog = new WizardDialog( HandlerUtil.getActiveShell(event), newGroupWizard); dialog.setTitle("Create a new group"); - - // Force refresh until the listener are implemented - if (Window.OK == dialog.open()) - forceRefresh(event); + dialog.open(); return null; } - private void forceRefresh(ExecutionEvent event) { - IWorkbenchWindow iww = HandlerUtil.getActiveWorkbenchWindow(event); - if (iww == null) - return; - IWorkbenchPage activePage = iww.getActivePage(); - IWorkbenchPart part = activePage.getActivePart(); - if (part instanceof GroupsView) - ((GroupsView) part).refresh(); - } - private class NewGroupWizard extends Wizard { // pages @@ -110,13 +93,15 @@ public class NewGroup extends AbstractHandler { return false; String commonName = commonNameTxt.getText(); try { - UiAdminUtils.beginTransactionIfNeeded(userTransaction); - Group user = (Group) userAdmin.createRole(getDn(commonName), + userAdminWrapper.beginTransactionIfNeeded(); + Group group = (Group) userAdmin.createRole(getDn(commonName), Role.GROUP); - Dictionary props = user.getProperties(); + Dictionary props = group.getProperties(); String descStr = descriptionTxt.getText(); if (UiAdminUtils.notNull(descStr)) props.put(UserAdminConstants.KEY_DESC, descStr); + userAdminWrapper.notifyListeners(new UserAdminEvent(null, + UserAdminEvent.ROLE_CREATED, group)); return true; } catch (Exception e) { ErrorFeedback.show("Cannot create new group " + commonName, e); @@ -208,11 +193,8 @@ public class NewGroup extends AbstractHandler { } /* DEPENDENCY INJECTION */ - public void setUserAdmin(UserAdmin userAdmin) { - this.userAdmin = userAdmin; - } - - public void setUserTransaction(UserTransaction userTransaction) { - this.userTransaction = userTransaction; + public void setUserAdminWrapper(UserAdminWrapper userAdminWrapper) { + this.userAdminWrapper = userAdminWrapper; + this.userAdmin = userAdminWrapper.getUserAdmin(); } } \ No newline at end of file