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=63a1fd84ebb76ce6dc7f9da3d9d924e807871143;hb=93832291a83666434bd589a0b3fd11f956224bfc;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..63a1fd84e 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,23 @@ 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, either because the SWT DLLs are no in the java.library.path," + + " or because the OSGi framework has been refreshed." + " Restart the application.", + e); } - display.dispose(); - display = null; } } @@ -72,11 +78,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)