projects
/
lgpl
/
argeo-commons.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Improve UI timeout
[lgpl/argeo-commons.git]
/
swt
/
org.argeo.cms.swt
/
src
/
org
/
argeo
/
cms
/
swt
/
CmsSwtUi.java
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 1d15f87f0ab977d8ecbdf1a3955ea4ac25c203a9..b16eb0f9e2b3a8912ed782efeb514c7f8abdea3f 100644
(file)
--- 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) {
}
public void setUiTimeout(long uiTimeout) {
- if (timeoutTask != null)
- timeoutTask.cancel();
+ clearTimeoutTask();
this.uiTimeout = uiTimeout;
if (this.uiTimeout <= 0)
return;
this.uiTimeout = uiTimeout;
if (this.uiTimeout <= 0)
return;
+ final long timeoutTaskPeriod = 60 * 60 * 1000;// 1h
timeoutTask = cmsView.schedule(() -> {
disposeIfTimedout();
timeoutTask = cmsView.schedule(() -> {
disposeIfTimedout();
- },
0, 60 * 1000
);
+ },
timeoutTaskPeriod, timeoutTaskPeriod
);
}
}
+ /** Must be run in UI thread. */
public void disposeIfTimedout() {
public void disposeIfTimedout() {
- if (timeoutTask == null)
- return;
if (isDisposed()) {
if (isDisposed()) {
- timeoutTask.cancel();
- timeoutTask = null;
+ clearTimeoutTask();
return;
}
if (System.currentTimeMillis() - getLastAccess() >= uiTimeout) {
return;
}
if (System.currentTimeMillis() - getLastAccess() >= uiTimeout) {
+ dispose();
+ clearTimeoutTask();
+ }
+ }
+
+ private void clearTimeoutTask() {
+ if (timeoutTask != null) {
timeoutTask.cancel();
timeoutTask = null;
timeoutTask.cancel();
timeoutTask = null;
- dispose();
}
}
}
}