]> git.argeo.org Git - gpl/argeo-slc.git/blob - legacy/argeo-commons/org.argeo.cms.ui.workbench.rap/src/org/argeo/cms/ui/workbench/rap/RapWorkbenchLogin.java
Major refactoring of Argeo CMS UI
[gpl/argeo-slc.git] / legacy / argeo-commons / org.argeo.cms.ui.workbench.rap / src / org / argeo / cms / ui / workbench / rap / RapWorkbenchLogin.java
1 package org.argeo.cms.ui.workbench.rap;
2
3 import java.security.PrivilegedAction;
4 import java.util.Locale;
5
6 import javax.security.auth.Subject;
7 import javax.security.auth.x500.X500Principal;
8
9 import org.argeo.cms.CmsMsg;
10 import org.argeo.cms.auth.CurrentUser;
11 import org.argeo.cms.ui.util.CmsUiUtils;
12 import org.eclipse.rap.rwt.RWT;
13 import org.eclipse.rap.rwt.client.service.JavaScriptExecutor;
14 import org.eclipse.swt.SWT;
15 import org.eclipse.swt.events.SelectionListener;
16 import org.eclipse.swt.widgets.Button;
17 import org.eclipse.swt.widgets.Composite;
18 import org.eclipse.swt.widgets.Display;
19 import org.eclipse.ui.PlatformUI;
20
21 public class RapWorkbenchLogin extends LoginEntryPoint {
22 // private final static Log log =
23 // LogFactory.getLog(RapWorkbenchLogin.class);
24
25 /** Override to provide an application specific workbench advisor */
26 protected RapWorkbenchAdvisor createRapWorkbenchAdvisor(String username) {
27 return new RapWorkbenchAdvisor(username);
28 }
29
30 @Override
31 public int createUI() {
32 JavaScriptExecutor jsExecutor = RWT.getClient().getService(JavaScriptExecutor.class);
33 int returnCode;
34 try {
35 returnCode = super.createUI();
36 } finally {
37 // always reload
38 // TODO optimise?
39 jsExecutor.execute("location.reload()");
40 }
41 return returnCode;
42 }
43
44 @Override
45 protected int postLogin() {
46 Subject subject = getSubject();
47 final Display display = Display.getCurrent();
48 if (subject.getPrincipals(X500Principal.class).isEmpty()) {
49 RWT.getClient().getService(JavaScriptExecutor.class).execute("location.reload()");
50 }
51 //
52 // RUN THE WORKBENCH
53 //
54 Integer returnCode = null;
55 try {
56 returnCode = Subject.doAs(subject, new PrivilegedAction<Integer>() {
57 public Integer run() {
58 int result = createAndRunWorkbench(display, CurrentUser.getUsername(subject));
59 return new Integer(result);
60 }
61 });
62 // explicit workbench closing
63 logout();
64 } finally {
65 display.dispose();
66 }
67 return returnCode;
68 }
69
70 protected int createAndRunWorkbench(Display display, String username) {
71 RapWorkbenchAdvisor workbenchAdvisor = createRapWorkbenchAdvisor(username);
72 return PlatformUI.createAndRunWorkbench(display, workbenchAdvisor);
73 }
74
75 @Override
76 protected void extendsCredentialsBlock(Composite credentialsBlock, Locale selectedLocale,
77 SelectionListener loginSelectionListener) {
78 // Button loginButton = new Button(credentialsBlock, SWT.PUSH);
79 // loginButton.setText(CmsMsg.login.lead(selectedLocale));
80 // loginButton.setLayoutData(CmsUtils.fillWidth());
81 // loginButton.addSelectionListener(loginSelectionListener);
82 }
83
84 @Override
85 protected Display createDisplay() {
86 return PlatformUI.createDisplay();
87 }
88
89 }