]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.security.ui/src/org/argeo/security/ui/login/WorkbenchLogin.java
Introduce workbench login
[lgpl/argeo-commons.git] / org.argeo.security.ui / src / org / argeo / security / ui / login / WorkbenchLogin.java
1 package org.argeo.security.ui.login;
2
3 import java.security.PrivilegedAction;
4
5 import javax.security.auth.Subject;
6
7 import org.argeo.cms.CmsImageManager;
8 import org.argeo.cms.CmsView;
9 import org.argeo.cms.auth.CurrentUser;
10 import org.argeo.cms.util.UserMenu;
11 import org.eclipse.rap.rwt.application.EntryPoint;
12 import org.eclipse.swt.SWT;
13 import org.eclipse.swt.widgets.Display;
14 import org.eclipse.swt.widgets.Shell;
15 import org.eclipse.ui.PlatformUI;
16
17 public abstract class WorkbenchLogin implements EntryPoint, CmsView {
18 private final Subject subject = new Subject();
19
20 @Override
21 public int createUI() {
22 final Display display = PlatformUI.createDisplay();
23 display.setData(CmsView.KEY, this);
24 Shell shell = new Shell(display, SWT.NO_TRIM);
25 shell.setMaximized(true);
26 UserMenu userMenu = new UserMenu(shell, false);
27 shell.open();
28 while (!userMenu.getShell().isDisposed()) {
29 if (!display.readAndDispatch()) {
30 display.sleep();
31 }
32 }
33 //
34 // RUN THE WORKBENCH
35 //
36 Integer returnCode = null;
37 try {
38 returnCode = Subject.doAs(subject, new PrivilegedAction<Integer>() {
39 public Integer run() {
40 int result = createAndRunWorkbench(display,
41 CurrentUser.getUsername(subject));
42 return new Integer(result);
43 }
44 });
45 } finally {
46 display.dispose();
47 }
48 return returnCode;
49 // display.dispose();
50 // return 0;
51 }
52
53 protected abstract int createAndRunWorkbench(Display display,
54 String username);
55
56 @Override
57 public void navigateTo(String state) {
58 // TODO Auto-generated method stub
59
60 }
61
62 @Override
63 public void authChange() {
64 }
65
66 @Override
67 public final Subject getSubject() {
68 return subject;
69 }
70
71 @Override
72 public void exception(Throwable e) {
73 // TODO Auto-generated method stub
74
75 }
76
77 @Override
78 public CmsImageManager getImageManager() {
79 // TODO Auto-generated method stub
80 return null;
81 }
82
83 }