Pass JCR context to the user menu
authorMathieu Baudier <mbaudier@argeo.org>
Tue, 11 Apr 2017 06:52:55 +0000 (08:52 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Tue, 11 Apr 2017 06:52:55 +0000 (08:52 +0200)
org.argeo.cms.ui/src/org/argeo/cms/util/UserMenu.java
org.argeo.cms.ui/src/org/argeo/cms/util/UserMenuLink.java

index 58dea808695b2a9497e339d0bdd36625d8a352fa..58b470dc8c46e49884eb32290ef479f08fd63039 100644 (file)
@@ -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;
+       }
+
 }
index 01f0b469485926b95d740b4bb378a686d3fe2d29..8416f220b43ebf6441acabe5bcde3c23e89c4d65 100644 (file)
@@ -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);
                                        }
                                }