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
.CmsMsg
;
10 import org
.argeo
.cms
.auth
.CurrentUser
;
11 import org
.argeo
.cms
.util
.CmsUtils
;
12 import org
.argeo
.cms
.util
.LoginEntryPoint
;
13 import org
.eclipse
.rap
.rwt
.RWT
;
14 import org
.eclipse
.rap
.rwt
.client
.service
.JavaScriptExecutor
;
15 import org
.eclipse
.swt
.SWT
;
16 import org
.eclipse
.swt
.events
.SelectionListener
;
17 import org
.eclipse
.swt
.widgets
.Button
;
18 import org
.eclipse
.swt
.widgets
.Composite
;
19 import org
.eclipse
.swt
.widgets
.Display
;
20 import org
.eclipse
.ui
.PlatformUI
;
22 public class RapWorkbenchLogin
extends LoginEntryPoint
{
23 // private final static Log log =
24 // LogFactory.getLog(RapWorkbenchLogin.class);
26 /** Override to provide an application specific workbench advisor */
27 protected RapWorkbenchAdvisor
createRapWorkbenchAdvisor(String username
) {
28 return new RapWorkbenchAdvisor(username
);
32 public int createUI() {
33 JavaScriptExecutor jsExecutor
= RWT
.getClient().getService(JavaScriptExecutor
.class);
36 returnCode
= super.createUI();
40 jsExecutor
.execute("location.reload()");
46 protected int postLogin() {
47 Subject subject
= getSubject();
48 final Display display
= Display
.getCurrent();
49 if (subject
.getPrincipals(X500Principal
.class).isEmpty()) {
50 RWT
.getClient().getService(JavaScriptExecutor
.class).execute("location.reload()");
55 Integer returnCode
= null;
57 returnCode
= Subject
.doAs(subject
, new PrivilegedAction
<Integer
>() {
58 public Integer
run() {
59 int result
= createAndRunWorkbench(display
, CurrentUser
.getUsername(subject
));
60 return new Integer(result
);
63 // explicit workbench closing
71 protected int createAndRunWorkbench(Display display
, String username
) {
72 RapWorkbenchAdvisor workbenchAdvisor
= createRapWorkbenchAdvisor(username
);
73 return PlatformUI
.createAndRunWorkbench(display
, workbenchAdvisor
);
77 protected void extendsCredentialsBlock(Composite credentialsBlock
, Locale selectedLocale
,
78 SelectionListener loginSelectionListener
) {
79 // Button loginButton = new Button(credentialsBlock, SWT.PUSH);
80 // loginButton.setText(CmsMsg.login.lead(selectedLocale));
81 // loginButton.setLayoutData(CmsUtils.fillWidth());
82 // loginButton.addSelectionListener(loginSelectionListener);
86 protected Display
createDisplay() {
87 return PlatformUI
.createDisplay();