1 package org
.argeo
.cms
.ui
.workbench
.rap
;
3 import java
.security
.PrivilegedAction
;
4 import java
.util
.Locale
;
6 import javax
.security
.auth
.Subject
;
7 import javax
.security
.auth
.x500
.X500Principal
;
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
;
17 public class RapWorkbenchLogin
extends LoginEntryPoint
{
18 // private final static Log log =
19 // LogFactory.getLog(RapWorkbenchLogin.class);
21 /** Override to provide an application specific workbench advisor */
22 protected RapWorkbenchAdvisor
createRapWorkbenchAdvisor(String username
) {
23 return new RapWorkbenchAdvisor(username
);
27 public int createUI() {
28 JavaScriptExecutor jsExecutor
= RWT
.getClient().getService(JavaScriptExecutor
.class);
31 returnCode
= super.createUI();
35 jsExecutor
.execute("location.reload()");
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()");
50 Integer returnCode
= null;
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
);
58 // explicit workbench closing
66 protected int createAndRunWorkbench(Display display
, String username
) {
67 RapWorkbenchAdvisor workbenchAdvisor
= createRapWorkbenchAdvisor(username
);
68 return PlatformUI
.createAndRunWorkbench(display
, workbenchAdvisor
);
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);
81 protected Display
createDisplay() {
82 return PlatformUI
.createDisplay();