]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - UserMenuLink.java
689318137fa06f8102a6e85973a59a0c17a048e9
1 package org
.argeo
.cms
.util
;
5 import org
.argeo
.cms
.CmsMsg
;
6 import org
.argeo
.cms
.CmsStyles
;
7 import org
.argeo
.cms
.KernelHeader
;
8 import org
.eclipse
.swt
.events
.DisposeEvent
;
9 import org
.eclipse
.swt
.events
.DisposeListener
;
10 import org
.eclipse
.swt
.events
.MouseEvent
;
11 import org
.eclipse
.swt
.events
.MouseListener
;
12 import org
.eclipse
.swt
.widgets
.Composite
;
13 import org
.eclipse
.swt
.widgets
.Control
;
14 import org
.eclipse
.swt
.widgets
.Label
;
15 import org
.springframework
.security
.core
.context
.SecurityContextHolder
;
17 /** Open the user menu when clicked */
18 public class UserMenuLink
extends MenuLink
{
20 public UserMenuLink() {
21 setCustom(CmsStyles
.CMS_USER_MENU_LINK
);
25 public Control
createUi(Composite parent
, Node context
) {
26 String username
= SecurityContextHolder
.getContext()
27 .getAuthentication().getName();
28 if (username
.equals(KernelHeader
.USERNAME_ANONYMOUS
))
29 setLabel(CmsMsg
.login
.lead());
32 Label link
= (Label
) ((Composite
) super.createUi(parent
, context
))
34 link
.addMouseListener(new UserMenuLinkController());
35 return link
.getParent();
38 protected UserMenu
createUserMenu(Control source
) {
39 return new UserMenu(source
.getParent());
42 private class UserMenuLinkController
implements MouseListener
,
44 private static final long serialVersionUID
= 3634864186295639792L;
46 private UserMenu userMenu
= null;
47 private long lastDisposeTS
= 0l;
53 public void mouseDown(MouseEvent e
) {
55 Control source
= (Control
) e
.getSource();
56 if (userMenu
== null) {
57 long durationSinceLastDispose
= System
.currentTimeMillis()
59 // avoid to reopen the menu, if one has clicked gain
60 if (durationSinceLastDispose
> 200) {
61 userMenu
= createUserMenu(source
);
62 userMenu
.addDisposeListener(this);
69 public void mouseDoubleClick(MouseEvent e
) {
73 public void mouseUp(MouseEvent e
) {
77 public void widgetDisposed(DisposeEvent event
) {
79 lastDisposeTS
= System
.currentTimeMillis();