1 package org
.argeo
.security
.ui
.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(
34 JavaScriptExecutor
.class);
37 returnCode
= super.createUI();
40 jsExecutor
.execute("location.reload()");
46 protected int postLogin() {
47 final Display display
= Display
.getCurrent();
48 Subject subject
= getSubject();
49 if (subject
.getPrincipals(X500Principal
.class).isEmpty()) {
50 RWT
.getClient().getService(JavaScriptExecutor
.class)
51 .execute("location.reload()");
56 Integer returnCode
= null;
58 returnCode
= Subject
.doAs(getSubject(),
59 new PrivilegedAction
<Integer
>() {
60 public Integer
run() {
61 int result
= createAndRunWorkbench(display
,
62 CurrentUser
.getUsername(getSubject()));
63 return new Integer(result
);
66 // explicit workbench closing
74 protected int createAndRunWorkbench(Display display
, String username
) {
75 RapWorkbenchAdvisor workbenchAdvisor
= createRapWorkbenchAdvisor(username
);
76 return PlatformUI
.createAndRunWorkbench(display
, workbenchAdvisor
);
80 protected void extendsCredentialsBlock(Composite credentialsBlock
,
81 Locale selectedLocale
, SelectionListener loginSelectionListener
) {
82 Button loginButton
= new Button(credentialsBlock
, SWT
.PUSH
);
83 loginButton
.setText(CmsMsg
.login
.lead(selectedLocale
));
84 loginButton
.setLayoutData(CmsUtils
.fillWidth());
85 loginButton
.addSelectionListener(loginSelectionListener
);
89 protected Display
createDisplay() {
90 return PlatformUI
.createDisplay();