Fix a few glitches
authorBruno Sinou <bsinou@argeo.org>
Thu, 17 Sep 2015 15:52:42 +0000 (15:52 +0000)
committerBruno Sinou <bsinou@argeo.org>
Thu, 17 Sep 2015 15:52:42 +0000 (15:52 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@8418 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.security.ui.admin/META-INF/spring/parts.xml
org.argeo.security.ui.admin/plugin.xml
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/UserEditor.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/UserMainPage.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/providers/UserTableDefaultDClickListener.java

index 1c65b66f85bd45f50d043f8db38cb0ed7dce7556..cbc36e0c33fe0b04a025cbad84d281a02cb067a8 100644 (file)
                <property name="userAdminWrapper" ref="userAdminWrapper" />
        </bean>
 
+       <bean id="groupEditor" class="org.argeo.security.ui.admin.internal.parts.UserEditor"
+               scope="prototype">
+               <property name="userAdminWrapper" ref="userAdminWrapper" />
+       </bean>
+
        <!-- Views -->
        <bean id="usersView" class="org.argeo.security.ui.admin.internal.parts.UsersView"
                scope="prototype">
@@ -20,5 +25,5 @@
                scope="prototype">
                <property name="userAdminWrapper" ref="userAdminWrapper" />
        </bean>
-       
+
 </beans>
\ No newline at end of file
index a339d54dc30321c4b093d1ba76dee6328f494624..9e33dd7d145d94fbaad54ebf77aae5bf88551fdc 100644 (file)
             id="org.argeo.security.ui.admin.userEditor"
             name="User"
             icon="icons/user.gif"
+            default="false">
+               </editor>
+               <editor
+                       class="org.argeo.eclipse.spring.SpringExtensionFactory"
+            id="org.argeo.security.ui.admin.groupEditor"
+            name="User"
+            icon="icons/users.gif"
             default="false">
                </editor>
        </extension>
index 71eba27f646ba1b6bc0ccc0fa21593340cdbfea6..d762d7d5d3806e117f0b5058a0608403f22e9d98 100644 (file)
@@ -24,20 +24,14 @@ import org.argeo.security.ui.admin.internal.UiAdminUtils;
 import org.argeo.security.ui.admin.internal.UserAdminConstants;
 import org.argeo.security.ui.admin.internal.UserAdminWrapper;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorSite;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.forms.AbstractFormPart;
 import org.eclipse.ui.forms.editor.FormEditor;
-import org.eclipse.ui.forms.widgets.FormToolkit;
 import org.osgi.service.useradmin.Authorization;
 import org.osgi.service.useradmin.Role;
 import org.osgi.service.useradmin.User;
@@ -49,8 +43,10 @@ import org.osgi.service.useradmin.UserAdminListener;
 public class UserEditor extends FormEditor implements UserAdminConstants {
        private static final long serialVersionUID = 8357851520380820241L;
 
-       public final static String ID = SecurityAdminPlugin.PLUGIN_ID
+       public final static String USER_EDITOR_ID = SecurityAdminPlugin.PLUGIN_ID
                        + ".userEditor";
+       public final static String GROUP_EDITOR_ID = SecurityAdminPlugin.PLUGIN_ID
+                       + ".groupEditor";
 
        /* DEPENDENCY INJECTION */
        private UserAdminWrapper userAdminWrapper;
@@ -70,13 +66,7 @@ public class UserEditor extends FormEditor implements UserAdminConstants {
 
                listener = new NameChangeListener(user);
                userAdminWrapper.addListener(listener);
-
-               // TODO: following has been disabled because it causes NPE after a
-               // login/logout on RAP
-               // Image titleIcon = user.getType() == Role.GROUP ?
-               // SecurityAdminImages.ICON_GROUP
-               // : SecurityAdminImages.ICON_USER;
-               // setTitleImage(titleIcon);
+               updateEditorTitle(null);
        }
 
        /**
@@ -109,7 +99,7 @@ public class UserEditor extends FormEditor implements UserAdminConstants {
        void updateEditorTitle(String title) {
                if (title == null) {
                        String commonName = UiAdminUtils.getProperty(user, KEY_CN);
-                       title = "".equals(commonName) ? commonName : user.getName();
+                       title = "".equals(commonName) ? user.getName() : commonName;
                }
                setPartName(title);
        }
@@ -125,15 +115,6 @@ public class UserEditor extends FormEditor implements UserAdminConstants {
                }
        }
 
-       /**
-        * Updates the property in the working copy. The transaction must be
-        * explicitly committed to persist the update.
-        */
-       @SuppressWarnings("unchecked")
-       protected void setProperty(String key, String value) {
-               user.getProperties().put(key, value);
-       }
-
        @Override
        public void doSave(IProgressMonitor monitor) {
                userAdminWrapper.beginTransactionIfNeeded();
index 013519cbe884b765aabca52725e955198aed4adf..e344083596ca2e3082fa82cf532d30d550680800 100644 (file)
@@ -146,23 +146,24 @@ public class UserMainPage extends FormPage implements ArgeoNames {
                                super.dispose();
                        }
 
+                       @SuppressWarnings("unchecked")
                        public void commit(boolean onSave) {
-                               // TODO Sanity checks
-                               editor.setProperty(UserAdminConstants.KEY_FIRSTNAME,
+                               // TODO Sanity checks (mail validity...)
+                               user.getProperties().put(UserAdminConstants.KEY_FIRSTNAME,
                                                firstName.getText());
-                               editor.setProperty(UserAdminConstants.KEY_LASTNAME,
+                               user.getProperties().put(UserAdminConstants.KEY_LASTNAME,
                                                lastName.getText());
-                               editor.setProperty(UserAdminConstants.KEY_CN,
+                               user.getProperties().put(UserAdminConstants.KEY_CN,
                                                commonName.getText());
-                               // TODO check mail validity
-                               editor.setProperty(UserAdminConstants.KEY_MAIL, email.getText());
-
+                               user.getProperties().put(UserAdminConstants.KEY_MAIL, email.getText());
                                // Enable common name ?
                                // editor.setProperty(UserAdminConstants.KEY_CN,
                                // email.getText());
                                super.commit(onSave);
                        }
 
+                       
+                       
                        @Override
                        public void refresh() {
                                distinguishedName.setText(UiAdminUtils.getProperty(user,
@@ -348,8 +349,10 @@ public class UserMainPage extends FormPage implements ArgeoNames {
                        }
                });
 
-               Action action = new RemoveMembershipAction(userViewer, user,
-                               "Remove selected groups", SecurityAdminImages.ICON_REMOVE_DESC);
+               String tooltip = "Remove " + UiAdminUtils.getUsername(user)
+                               + " from the below selected groups";
+               Action action = new RemoveMembershipAction(userViewer, user, tooltip,
+                               SecurityAdminImages.ICON_REMOVE_DESC);
                toolBarManager.add(action);
                toolBarManager.update(true);
                section.setTextClient(toolbar);
index 94434bd8a3a6942c2a64abc39807cbe00b056732..82e227b110e3c19fe9f04e63e58ab21dd70b4103 100644 (file)
@@ -10,6 +10,7 @@ import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PartInitException;
+import org.osgi.service.useradmin.Group;
 import org.osgi.service.useradmin.User;
 
 /**
@@ -30,8 +31,12 @@ public class UserTableDefaultDClickListener implements IDoubleClickListener {
                UserEditorInput uei = new UserEditorInput(user.getName());
 
                try {
-                       // IEditorPart editor =
-                       iwp.openEditor(uei, UserEditor.ID);
+                       // Work around the fact that dynamic setting of the editor icon
+                       // causes NPE after a login/logout on RAP
+                       if (user instanceof Group)
+                               iwp.openEditor(uei, UserEditor.GROUP_EDITOR_ID);
+                       else
+                               iwp.openEditor(uei, UserEditor.USER_EDITOR_ID);
                } catch (PartInitException pie) {
                        throw new ArgeoException("Unable to open UserEditor for " + user,
                                        pie);