- }
-
- class CmsUiThread extends Thread {
-
- public CmsUiThread() {
- super("CMS UI");
- }
-
- @Override
- public void run() {
- display = Display.getDefault();
- shell = new Shell(display);
- shell.setText("Argeo CMS");
- Composite parent = shell;
- parent.setLayout(new GridLayout());
- CmsSwtUtils.registerCmsView(shell, CmsRcpApp.this);
-
-// Subject subject = new Subject();
-// CmsLoginShell loginShell = new CmsLoginShell(CmsRcpApp.this);
-// loginShell.setSubject(subject);
- try {
- // try pre-auth
-// loginContext = new LoginContext(NodeConstants.LOGIN_CONTEXT_USER, subject, loginShell);
- loginContext = new LoginContext(CmsAuth.LOGIN_CONTEXT_SINGLE_USER);
- loginContext.login();
- } catch (LoginException e) {
- throw new IllegalStateException("Could not log in.", e);
-// loginShell.createUi();
-// loginShell.open();
-//
-// while (!loginShell.getShell().isDisposed()) {
-// if (!display.readAndDispatch())
-// display.sleep();
-// }
- }
- if (log.isDebugEnabled())
- log.debug("Logged in to desktop: " + loginContext.getSubject());
-
- Subject.doAs(loginContext.getSubject(), (PrivilegedAction<Void>) () -> {
-
- // TODO factorise with web app
- parent.setData(CmsApp.UI_NAME_PROPERTY, uiName);
- ui = cmsApp.initUi(parent);
- if (ui instanceof Composite)
- ((Composite) ui).setLayoutData(CmsSwtUtils.fillAll());
- // ui.setLayoutData(CmsUiUtils.fillAll());
- // we need ui to be set before refresh so that CmsView can store UI context data
- // in it.
- cmsApp.refreshUi(ui, null);
-
- // Styling
- CmsTheme theme = CmsSwtUtils.getCmsTheme(parent);
- if (theme != null) {
- cssEngine = new CSSSWTEngineImpl(display);
- for (String path : theme.getSwtCssPaths()) {
- try (InputStream in = theme.loadPath(path)) {
- cssEngine.parseStyleSheet(in);
- } catch (IOException e) {
- throw new IllegalStateException("Cannot load stylesheet " + path, e);
- }
+ if (log.isDebugEnabled())
+ log.debug("Logged in to desktop: " + loginContext.getSubject());
+
+ Subject.doAs(loginContext.getSubject(), (PrivilegedAction<Void>) () -> {
+
+ // TODO factorise with web app
+ parent.setData(CmsApp.UI_NAME_PROPERTY, uiName);
+ ui = cmsApp.initUi(parent);
+ if (ui instanceof Composite)
+ ((Composite) ui).setLayoutData(CmsSwtUtils.fillAll());
+ // we need ui to be set before refresh so that CmsView can store UI context data
+ // in it.
+ cmsApp.refreshUi(ui, null);
+
+ // Styling
+ CmsTheme theme = CmsSwtUtils.getCmsTheme(parent);
+ if (theme != null) {
+ cssEngine = new CSSSWTEngineImpl(display);
+ for (String path : theme.getSwtCssPaths()) {
+ try (InputStream in = theme.loadPath(path)) {
+ cssEngine.parseStyleSheet(in);
+ } catch (IOException e) {
+ throw new IllegalStateException("Cannot load stylesheet " + path, e);