X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=swt%2Forg.argeo.cms.swt%2Fsrc%2Forg%2Fargeo%2Fcms%2Fswt%2FCmsSwtUi.java;h=b16eb0f9e2b3a8912ed782efeb514c7f8abdea3f;hb=77e34d094e43d744b9a76b4bea5ec4eb24611195;hp=1d15f87f0ab977d8ecbdf1a3955ea4ac25c203a9;hpb=0f65d70353d9c630130c5715fe575c39ea2b6b19;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 1d15f87f0..b16eb0f9e 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 @@ -41,28 +41,32 @@ public class CmsSwtUi extends Composite implements CmsUi { } public void setUiTimeout(long uiTimeout) { - if (timeoutTask != null) - timeoutTask.cancel(); + clearTimeoutTask(); this.uiTimeout = uiTimeout; if (this.uiTimeout <= 0) return; + final long timeoutTaskPeriod = 60 * 60 * 1000;// 1h timeoutTask = cmsView.schedule(() -> { disposeIfTimedout(); - }, 0, 60 * 1000); + }, timeoutTaskPeriod, timeoutTaskPeriod); } + /** Must be run in UI thread. */ public void disposeIfTimedout() { - if (timeoutTask == null) - return; if (isDisposed()) { - timeoutTask.cancel(); - timeoutTask = null; + clearTimeoutTask(); return; } if (System.currentTimeMillis() - getLastAccess() >= uiTimeout) { + dispose(); + clearTimeoutTask(); + } + } + + private void clearTimeoutTask() { + if (timeoutTask != null) { timeoutTask.cancel(); timeoutTask = null; - dispose(); } }