Merge security.ui bundle in the cms.ui.workbench bundle
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / util / UserMenuLink.java
index 689318137fa06f8102a6e85973a59a0c17a048e9..1b7ca03f44f2fcc937498a208d6274840a9947b5 100644 (file)
@@ -1,10 +1,12 @@
 package org.argeo.cms.util;
 
 import javax.jcr.Node;
+import javax.security.auth.Subject;
 
 import org.argeo.cms.CmsMsg;
 import org.argeo.cms.CmsStyles;
-import org.argeo.cms.KernelHeader;
+import org.argeo.cms.auth.AuthConstants;
+import org.argeo.cms.auth.CurrentUser;
 import org.eclipse.swt.events.DisposeEvent;
 import org.eclipse.swt.events.DisposeListener;
 import org.eclipse.swt.events.MouseEvent;
@@ -12,7 +14,6 @@ import org.eclipse.swt.events.MouseListener;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
-import org.springframework.security.core.context.SecurityContextHolder;
 
 /** Open the user menu when clicked */
 public class UserMenuLink extends MenuLink {
@@ -23,12 +24,13 @@ public class UserMenuLink extends MenuLink {
 
        @Override
        public Control createUi(Composite parent, Node context) {
-               String username = SecurityContextHolder.getContext()
-                               .getAuthentication().getName();
-               if (username.equals(KernelHeader.USERNAME_ANONYMOUS))
+               Subject subject = CmsUtils.getCmsView().getSubject();
+               String username = CurrentUser.getUsername(subject);
+               if (username.equalsIgnoreCase(AuthConstants.ROLE_ANONYMOUS))
                        setLabel(CmsMsg.login.lead());
-               else
-                       setLabel(username);
+               else {
+                       setLabel(CurrentUser.getDisplayName(subject));
+               }
                Label link = (Label) ((Composite) super.createUi(parent, context))
                                .getChildren()[0];
                link.addMouseListener(new UserMenuLinkController());
@@ -59,7 +61,7 @@ public class UserMenuLink extends MenuLink {
                                        // avoid to reopen the menu, if one has clicked gain
                                        if (durationSinceLastDispose > 200) {
                                                userMenu = createUserMenu(source);
-                                               userMenu.addDisposeListener(this);
+                                               userMenu.getShell().addDisposeListener(this);
                                        }
                                }
                        }