]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/UserEditor.java
Improve and simplify OSGi Boot
[lgpl/argeo-commons.git] / org.argeo.security.ui.admin / src / org / argeo / security / ui / admin / internal / parts / UserEditor.java
index e49c803e4db890c74da29c58b3443e3177cfe2c9..6c0731d01d26902bfc01c21df9be724039c6e7a2 100644 (file)
@@ -18,16 +18,17 @@ package org.argeo.security.ui.admin.internal.parts;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.argeo.ArgeoException;
+import org.argeo.cms.CmsException;
+import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.osgi.useradmin.LdifName;
 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.internal.UiUserAdminListener;
 import org.argeo.security.ui.admin.internal.UserAdminWrapper;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorSite;
 import org.eclipse.ui.PartInitException;
@@ -38,10 +39,9 @@ import org.osgi.service.useradmin.Role;
 import org.osgi.service.useradmin.User;
 import org.osgi.service.useradmin.UserAdmin;
 import org.osgi.service.useradmin.UserAdminEvent;
-import org.osgi.service.useradmin.UserAdminListener;
 
 /** Editor for a user, might be a user or a group. */
-public class UserEditor extends FormEditor implements UserAdminConstants {
+public class UserEditor extends FormEditor {
        private static final long serialVersionUID = 8357851520380820241L;
 
        public final static String USER_EDITOR_ID = SecurityAdminPlugin.PLUGIN_ID
@@ -65,13 +65,13 @@ public class UserEditor extends FormEditor implements UserAdminConstants {
                username = ((UserEditorInput) getEditorInput()).getUsername();
                user = (User) userAdmin.getRole(username);
 
-               listener = new NameChangeListener(user);
+               listener = new NameChangeListener(site.getShell().getDisplay(), user);
                userAdminWrapper.addListener(listener);
                updateEditorTitle(null);
        }
 
        /**
-        * returns the list of all authorisation for the given user or of the
+        * returns the list of all authorization for the given user or of the
         * current displayed user if parameter is null
         */
        protected List<User> getFlatGroups(User aUser) {
@@ -99,7 +99,7 @@ public class UserEditor extends FormEditor implements UserAdminConstants {
 
        void updateEditorTitle(String title) {
                if (title == null) {
-                       String commonName = UiAdminUtils.getProperty(user,
+                       String commonName = UserAdminUtils.getProperty(user,
                                        LdifName.cn.name());
                        title = "".equals(commonName) ? user.getName() : commonName;
                }
@@ -113,7 +113,7 @@ public class UserEditor extends FormEditor implements UserAdminConstants {
                        else
                                addPage(new UserMainPage(this, userAdminWrapper));
                } catch (Exception e) {
-                       throw new ArgeoException("Cannot add pages", e);
+                       throw new CmsException("Cannot add pages", e);
                }
        }
 
@@ -121,6 +121,7 @@ public class UserEditor extends FormEditor implements UserAdminConstants {
        public void doSave(IProgressMonitor monitor) {
                userAdminWrapper.beginTransactionIfNeeded();
                commitPages(true);
+               userAdminWrapper.commitOrNotifyTransactionStateChange();
                firePropertyChange(PROP_DIRTY);
                userAdminWrapper.notifyListeners(new UserAdminEvent(null,
                                UserAdminEvent.ROLE_REMOVED, user));
@@ -143,46 +144,49 @@ public class UserEditor extends FormEditor implements UserAdminConstants {
 
        // CONTROLERS FOR THIS EDITOR AND ITS PAGES
 
-       private class NameChangeListener implements UserAdminListener {
+       private class NameChangeListener extends UiUserAdminListener {
 
                private final User user;
 
-               public NameChangeListener(User user) {
+               public NameChangeListener(Display display, User user) {
+                       super(display);
                        this.user = user;
                }
 
                @Override
-               public void roleChanged(UserAdminEvent event) {
+               public void roleChangedToUiThread(UserAdminEvent event) {
                        Role changedRole = event.getRole();
                        if (changedRole == null || changedRole.equals(user))
                                updateEditorTitle(null);
                }
        }
 
-       class MainInfoListener implements UserAdminListener {
+       class MainInfoListener extends UiUserAdminListener {
                private final AbstractFormPart part;
 
-               public MainInfoListener(AbstractFormPart part) {
+               public MainInfoListener(Display display, AbstractFormPart part) {
+                       super(display);
                        this.part = part;
                }
 
                @Override
-               public void roleChanged(UserAdminEvent event) {
+               public void roleChangedToUiThread(UserAdminEvent event) {
                        // Rollback
                        if (event.getRole() == null)
                                part.markStale();
                }
        }
 
-       class GroupChangeListener implements UserAdminListener {
+       class GroupChangeListener extends UiUserAdminListener {
                private final AbstractFormPart part;
 
-               public GroupChangeListener(AbstractFormPart part) {
+               public GroupChangeListener(Display display, AbstractFormPart part) {
+                       super(display);
                        this.part = part;
                }
 
                @Override
-               public void roleChanged(UserAdminEvent event) {
+               public void roleChangedToUiThread(UserAdminEvent event) {
                        // always mark as stale
                        part.markStale();
                }