X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=swt%2Forg.argeo.cms.swt%2Fsrc%2Forg%2Fargeo%2Fcms%2Fswt%2FCmsSwtUi.java;h=7aac07b155fdbeefba571bab54d03c8917b09a2c;hb=86cc16187d90def2e82829b55d4a1ec4a20edf25;hp=e0f63e45e2eb85578428923964f1421fa1ba25fe;hpb=46fe088ea0839d61df1450c0bea48b203411e028;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 e0f63e45e..7aac07b15 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 @@ -1,5 +1,7 @@ package org.argeo.cms.swt; +import java.util.TimerTask; + import org.argeo.api.cms.ux.CmsUi; import org.argeo.api.cms.ux.CmsView; import org.eclipse.swt.layout.GridLayout; @@ -10,17 +12,42 @@ public class CmsSwtUi extends Composite implements CmsUi { private static final long serialVersionUID = -107939076610406448L; + /** Last time the UI was accessed. */ + private long lastAccess = System.currentTimeMillis(); + private TimerTask timeoutTask; + 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()); } + @Override public CmsView getCmsView() { return cmsView; } + @Override + public long getLastAccess() { + return lastAccess; + } + + @Override + public void updateLastAccess() { + this.lastAccess = System.currentTimeMillis(); + } + + public void setUiTimeout(long uiTimeout) { + if (timeoutTask != null) + timeoutTask.cancel(); + timeoutTask = cmsView.schedule(() -> { + if (System.currentTimeMillis() - getLastAccess() >= uiTimeout) + dispose(); + }, 0, 1000); + } + } \ No newline at end of file