X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=swt%2Forg.argeo.cms.swt%2Fsrc%2Forg%2Fargeo%2Fcms%2Fswt%2FCmsSwtUi.java;h=1d15f87f0ab977d8ecbdf1a3955ea4ac25c203a9;hb=a60e1d15c4916e6fe809e82182f300f6f3d4fa2c;hp=7aac07b155fdbeefba571bab54d03c8917b09a2c;hpb=e7b1de2ae9bb21067f9ec2ccba663b2f9665ccb6;p=lgpl%2Fargeo-commons.git diff --git a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/CmsSwtUi.java b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/CmsSwtUi.java index 7aac07b15..1d15f87f0 100644 --- a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/CmsSwtUi.java +++ b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/CmsSwtUi.java @@ -15,14 +15,13 @@ public class CmsSwtUi extends Composite implements CmsUi { /** Last time the UI was accessed. */ private long lastAccess = System.currentTimeMillis(); private TimerTask timeoutTask; + private long uiTimeout = 0; private CmsView cmsView; public CmsSwtUi(Composite parent, int style) { super(parent, style); cmsView = CmsSwtUtils.getCmsView(parent); - // TODO make timeout configurable - setUiTimeout(12 * 60 * 60 * 1000);// 12 hours setLayout(new GridLayout()); } @@ -44,10 +43,27 @@ public class CmsSwtUi extends Composite implements CmsUi { public void setUiTimeout(long uiTimeout) { if (timeoutTask != null) timeoutTask.cancel(); + this.uiTimeout = uiTimeout; + if (this.uiTimeout <= 0) + return; timeoutTask = cmsView.schedule(() -> { - if (System.currentTimeMillis() - getLastAccess() >= uiTimeout) - dispose(); - }, 0, 1000); + disposeIfTimedout(); + }, 0, 60 * 1000); + } + + public void disposeIfTimedout() { + if (timeoutTask == null) + return; + if (isDisposed()) { + timeoutTask.cancel(); + timeoutTask = null; + return; + } + if (System.currentTimeMillis() - getLastAccess() >= uiTimeout) { + timeoutTask.cancel(); + timeoutTask = null; + dispose(); + } } } \ No newline at end of file