]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - CmsSwtUi.java
d02ad3aec371202cb8f4c42364b15a45277b5605
1 package org
.argeo
.cms
.swt
;
3 import org
.argeo
.api
.cms
.ux
.CmsUi
;
4 import org
.argeo
.api
.cms
.ux
.CmsView
;
5 import org
.eclipse
.swt
.layout
.GridLayout
;
6 import org
.eclipse
.swt
.widgets
.Composite
;
8 /** A basic {@link CmsUi}, based on an SWT {@link Composite}. */
9 public class CmsSwtUi
extends Composite
implements CmsUi
{
11 private static final long serialVersionUID
= -107939076610406448L;
13 /** Last time the UI was accessed. */
14 private long lastAccess
= System
.currentTimeMillis();
15 // private TimerTask timeoutTask;
16 private long uiTimeout
= 0;
18 private CmsView cmsView
;
20 public CmsSwtUi(Composite parent
, int style
) {
22 cmsView
= CmsSwtUtils
.getCmsView(parent
);
23 setLayout(new GridLayout());
27 public CmsView
getCmsView() {
32 public void updateLastAccess() {
33 this.lastAccess
= System
.currentTimeMillis();
36 public void setUiTimeout(long uiTimeout
) {
37 // clearTimeoutTask();
38 this.uiTimeout
= uiTimeout
;
39 if (this.uiTimeout
<= 0)
41 // TODO introduce mechanism to check whether the UI is "zombie"
42 // (that is the UI thread still exists, but cannot execute anything)
43 // final long timeoutTaskPeriod = 60 * 60 * 1000;// 1h
44 // timeoutTask = cmsView.schedule(() -> {
45 // disposeIfTimedout();
46 // }, timeoutTaskPeriod, timeoutTaskPeriod);
47 // addDisposeListener((e) -> {
48 // clearTimeoutTask();
52 // /** Must be run in UI thread. */
53 // public void disposeIfTimedout() {
54 // System.out.println("Enter disposeIfTimedout");
55 // if (isDisposed()) {
56 // clearTimeoutTask();
59 // if (isTimedOut()) {
61 // clearTimeoutTask();
62 // System.out.println("Disposed after timeout");
66 // private void clearTimeoutTask() {
67 // if (timeoutTask != null) {
68 // timeoutTask.cancel();
69 // timeoutTask = null;
74 public boolean isTimedOut() {
75 return uiTimeout
> 0 && (System
.currentTimeMillis() - lastAccess
>= uiTimeout
);
78 // class DisposeIfTimedOutTask implements Runnable {
79 // public void run() {
80 // disposeIfTimedout();
81 // getDisplay().timerExec(1000, new DisposeIfTimedOutTask());