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