X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=swt%2Frcp%2Forg.argeo.cms.swt.rcp%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Frcp%2FCmsRcpDisplayFactory.java;h=a83a54db3926cfa2503079c22d3224dff28a8591;hb=54df376a9c2dd458a82eaa09bfbb718fe699dd0d;hp=ec471c0216785167044b6395189537a119175aaa;hpb=7b242851c0094d13cbaca5b68261ad92c873a59f;p=lgpl%2Fargeo-commons.git diff --git a/swt/rcp/org.argeo.cms.swt.rcp/src/org/argeo/cms/ui/rcp/CmsRcpDisplayFactory.java b/swt/rcp/org.argeo.cms.swt.rcp/src/org/argeo/cms/ui/rcp/CmsRcpDisplayFactory.java index ec471c021..a83a54db3 100644 --- a/swt/rcp/org.argeo.cms.swt.rcp/src/org/argeo/cms/ui/rcp/CmsRcpDisplayFactory.java +++ b/swt/rcp/org.argeo.cms.swt.rcp/src/org/argeo/cms/ui/rcp/CmsRcpDisplayFactory.java @@ -1,15 +1,18 @@ package org.argeo.cms.ui.rcp; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; import java.nio.file.Path; import org.argeo.api.cms.CmsApp; -import org.argeo.util.OS; -import org.eclipse.swt.widgets.Display; -import org.osgi.service.event.EventAdmin; +import org.argeo.cms.util.OS; import org.eclipse.swt.events.DisposeListener; +import org.eclipse.swt.widgets.Display; /** Creates the SWT {@link Display} in a dedicated thread. */ public class CmsRcpDisplayFactory { + private final static Logger logger = System.getLogger(CmsRcpDisplayFactory.class.getName()); + /** File name in a run directory */ private final static String ARGEO_RCP_URL = "argeo.rcp.url"; @@ -51,20 +54,22 @@ public class CmsRcpDisplayFactory { @Override public void run() { - display = Display.getDefault(); - display.setRuntimeExceptionHandler((e) -> e.printStackTrace()); - display.setErrorHandler((e) -> e.printStackTrace()); - -// for (String contextName : cmsApps.keySet()) { -// openCmsApp(contextName); -// } - - while (!shutdown) { - if (!display.readAndDispatch()) - display.sleep(); + try { + display = Display.getDefault(); + display.setRuntimeExceptionHandler((e) -> e.printStackTrace()); + display.setErrorHandler((e) -> e.printStackTrace()); + + while (!shutdown) { + if (!display.readAndDispatch()) + display.sleep(); + } + display.dispose(); + display = null; + } catch (UnsatisfiedLinkError e) { + logger.log(Level.ERROR, + "Cannot load SWT, probably because the OSGi framework has been refresh. Restart the application.", + e); } - display.dispose(); - display = null; } } @@ -72,11 +77,9 @@ public class CmsRcpDisplayFactory { return display; } - public static void openCmsApp(EventAdmin eventAdmin, CmsApp cmsApp, String uiName, - DisposeListener disposeListener) { + public static void openCmsApp(CmsApp cmsApp, String uiName, DisposeListener disposeListener) { CmsRcpDisplayFactory.getDisplay().syncExec(() -> { CmsRcpApp cmsRcpApp = new CmsRcpApp(uiName); - cmsRcpApp.setEventAdmin(eventAdmin); cmsRcpApp.setCmsApp(cmsApp, null); cmsRcpApp.initRcpApp(); if (disposeListener != null)