1 package org
.argeo
.security
.ui
.rcp
;
3 import java
.security
.PrivilegedAction
;
5 import javax
.security
.auth
.Subject
;
7 import org
.argeo
.security
.equinox
.CurrentUser
;
8 import org
.eclipse
.equinox
.app
.IApplication
;
9 import org
.eclipse
.equinox
.app
.IApplicationContext
;
10 import org
.eclipse
.swt
.graphics
.Point
;
11 import org
.eclipse
.swt
.widgets
.Display
;
12 import org
.eclipse
.ui
.IWorkbench
;
13 import org
.eclipse
.ui
.PlatformUI
;
14 import org
.eclipse
.ui
.application
.ActionBarAdvisor
;
15 import org
.eclipse
.ui
.application
.IActionBarConfigurer
;
16 import org
.eclipse
.ui
.application
.IWorkbenchWindowConfigurer
;
17 import org
.eclipse
.ui
.application
.WorkbenchAdvisor
;
18 import org
.eclipse
.ui
.application
.WorkbenchWindowAdvisor
;
20 public class SecureRap
implements IApplication
{
21 public Object
start(IApplicationContext context
) throws Exception
{
22 String username
= CurrentUser
.getUsername();
23 Integer result
= null;
24 Display display
= PlatformUI
.createDisplay();
26 result
= (Integer
) Subject
.doAs(CurrentUser
.getSubject(),
27 getRunAction(display
));
28 } catch (Exception e
) {
36 @SuppressWarnings("rawtypes")
37 private PrivilegedAction
getRunAction(final Display display
) {
38 return new PrivilegedAction() {
41 int result
= PlatformUI
.createAndRunWorkbench(display
,
42 new ApplicationWorkbenchAdvisor());
43 return new Integer(result
);
49 final IWorkbench workbench
;
51 workbench
= PlatformUI
.getWorkbench();
52 } catch (Exception e
) {
55 if (workbench
== null)
57 final Display display
= workbench
.getDisplay();
58 display
.syncExec(new Runnable() {
61 if (!display
.isDisposed())
67 class ApplicationWorkbenchAdvisor
extends WorkbenchAdvisor
{
69 private static final String PERSPECTIVE_ID
= "org.argeo.security.ui.securityPerspective";
71 public WorkbenchWindowAdvisor
createWorkbenchWindowAdvisor(
72 IWorkbenchWindowConfigurer configurer
) {
73 return new ApplicationWorkbenchWindowAdvisor(configurer
);
76 public String
getInitialWindowPerspectiveId() {
77 return PERSPECTIVE_ID
;
81 class ApplicationWorkbenchWindowAdvisor
extends WorkbenchWindowAdvisor
{
83 public ApplicationWorkbenchWindowAdvisor(
84 IWorkbenchWindowConfigurer configurer
) {
88 public ActionBarAdvisor
createActionBarAdvisor(
89 IActionBarConfigurer configurer
) {
90 return new ActionBarAdvisor(configurer
);
93 public void preWindowOpen() {
94 IWorkbenchWindowConfigurer configurer
= getWindowConfigurer();
95 configurer
.setInitialSize(new Point(500, 300));
96 configurer
.setShowCoolBar(false);
97 configurer
.setShowMenuBar(false);
98 configurer
.setShowStatusLine(false);
99 configurer
.setTitle("Equinox Security on RAP");