Я создал следующий класс:
Код: Выделить всё
public class SessionManager {
private long timeStampLastMs;
private long timeOutTimeMs = 20000L;
private static SessionManager sessionManager = null;
private SessionManager() {
}
public static SessionManager getSessionManager() {
if (sessionManager == null) {
sessionManager = new SessionManager();
}
return sessionManager;
}
public synchronized boolean isActivityTimeOut() {
boolean timeout = false;
long now = System.currentTimeMillis();
if (timeOutTimeMs < (now - timeStampLastMs)) {
timeout = true;
}
return timeout;
}
public synchronized void resetActivityTimeOut() {
timeStampLastMs = System.currentTimeMillis();
}
public void timeoutScreen() {
int defaultIndex = 0;
MessageDialog dialog = new MessageDialog(null, "Information", null,
"Login session expired. Please close this window and restart application", MessageDialog.INFORMATION,
new String[] { IDialogConstants.OK_LABEL }, defaultIndex);
dialog.open();
}
}
Код: Выделить всё
@Override
public void eventLoopIdle(Display display) {
SessionManager sessionManager = SessionManager.getSessionManager();
if (sessionManager.isActivityTimeOut()) {
sessionManager.timeoutScreen();
display.dispose();
System.exit(0);
}
super.eventLoopIdle(display);
}
Код: Выделить всё
public Object run(Object args) throws Exception {
Listener uiListener = new Listener() {
@Override
public void handleEvent (Event event) {
SessionManager.getSessionManager().resetActivityTimeOut();
}
};
Display display = PlatformUI.createDisplay();
display.addFilter(SWT.KeyUp, uiListener);
display.addFilter(SWT.MouseUp, uiListener);
display.addFilter(SWT.Activate, uiListener);
try {
final Session session = Session.getInstance();
Platform.endSplash();
if (!login(session))
return IPlatformRunnable.EXIT_OK;
int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
if (returnCode == PlatformUI.RETURN_RESTART) {
return IPlatformRunnable.EXIT_RESTART;
}
return IPlatformRunnable.EXIT_OK;
} finally {
display.dispose();
}
}
Что мне нужно сделать, чтобы это заработало?
Подробнее здесь: https://stackoverflow.com/questions/792 ... on-timeout