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
.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
;
21 public class RapWorkbenchLogin
extends LoginEntryPoint
{
22 // private final static Log log =
23 // LogFactory.getLog(RapWorkbenchLogin.class);
25 /** Override to provide an application specific workbench advisor */
26 protected RapWorkbenchAdvisor
createRapWorkbenchAdvisor(String username
) {
27 return new RapWorkbenchAdvisor(username
);
31 public int createUI() {
32 JavaScriptExecutor jsExecutor
= RWT
.getClient().getService(JavaScriptExecutor
.class);
35 returnCode
= super.createUI();
39 jsExecutor
.execute("location.reload()");
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()");
54 Integer returnCode
= null;
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
);
62 // explicit workbench closing
70 protected int createAndRunWorkbench(Display display
, String username
) {
71 RapWorkbenchAdvisor workbenchAdvisor
= createRapWorkbenchAdvisor(username
);
72 return PlatformUI
.createAndRunWorkbench(display
, workbenchAdvisor
);
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);
85 protected Display
createDisplay() {
86 return PlatformUI
.createDisplay();