From: Mathieu Baudier Date: Tue, 11 Apr 2017 06:52:55 +0000 (+0200) Subject: Pass JCR context to the user menu X-Git-Tag: argeo-commons-2.1.68~3 X-Git-Url: https://git.argeo.org/?a=commitdiff_plain;h=b33a1a30542169dc07f525b4d7d1baab7fa36564;p=lgpl%2Fargeo-commons.git Pass JCR context to the user menu --- diff --git a/org.argeo.cms.ui/src/org/argeo/cms/util/UserMenu.java b/org.argeo.cms.ui/src/org/argeo/cms/util/UserMenu.java index 58dea8086..58b470dc8 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/util/UserMenu.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/util/UserMenu.java @@ -1,5 +1,7 @@ package org.argeo.cms.util; +import javax.jcr.Node; + import org.argeo.cms.CmsException; import org.argeo.cms.widgets.auth.CmsLoginShell; import org.eclipse.swt.SWT; @@ -12,9 +14,11 @@ import org.eclipse.swt.widgets.Shell; /** The site-related user menu */ public class UserMenu extends CmsLoginShell { private final Control source; + private final Node context; - public UserMenu(Control source) { + public UserMenu(Control source, Node context) { super(CmsUtils.getCmsView()); + this.context = context; createUi(); if (source == null) throw new CmsException("Source control cannot be null."); @@ -24,8 +28,7 @@ public class UserMenu extends CmsLoginShell { @Override protected Shell createShell() { - return new Shell(Display.getCurrent(), SWT.NO_TRIM | SWT.BORDER - | SWT.ON_TOP); + return new Shell(Display.getCurrent(), SWT.NO_TRIM | SWT.BORDER | SWT.ON_TOP); } @Override @@ -33,8 +36,7 @@ public class UserMenu extends CmsLoginShell { Shell shell = getShell(); shell.pack(); shell.layout(); - shell.setLocation(source.toDisplay(source.getSize().x - - shell.getSize().x, source.getSize().y)); + shell.setLocation(source.toDisplay(source.getSize().x - shell.getSize().x, source.getSize().y)); shell.addShellListener(new ShellAdapter() { private static final long serialVersionUID = 5178980294808435833L; @@ -46,4 +48,8 @@ public class UserMenu extends CmsLoginShell { super.open(); } + protected Node getContext() { + return context; + } + } diff --git a/org.argeo.cms.ui/src/org/argeo/cms/util/UserMenuLink.java b/org.argeo.cms.ui/src/org/argeo/cms/util/UserMenuLink.java index 01f0b4694..8416f220b 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/util/UserMenuLink.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/util/UserMenuLink.java @@ -28,12 +28,12 @@ public class UserMenuLink extends MenuLink { setLabel(CurrentUser.getDisplayName()); } Label link = (Label) ((Composite) super.createUi(parent, context)).getChildren()[0]; - link.addMouseListener(new UserMenuLinkController()); + link.addMouseListener(new UserMenuLinkController(context)); return link.getParent(); } - protected UserMenu createUserMenu(Control source) { - return new UserMenu(source.getParent()); + protected UserMenu createUserMenu(Control source,Node context) { + return new UserMenu(source.getParent(),context); } private class UserMenuLinkController implements MouseListener, DisposeListener { @@ -42,6 +42,12 @@ public class UserMenuLink extends MenuLink { private UserMenu userMenu = null; private long lastDisposeTS = 0l; + private final Node context; + + public UserMenuLinkController(Node context) { + this.context = context; + } + // // MOUSE LISTENER // @@ -53,7 +59,7 @@ public class UserMenuLink extends MenuLink { long durationSinceLastDispose = System.currentTimeMillis() - lastDisposeTS; // avoid to reopen the menu, if one has clicked gain if (durationSinceLastDispose > 200) { - userMenu = createUserMenu(source); + userMenu = createUserMenu(source,context); userMenu.getShell().addDisposeListener(this); } }