⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usersessionmanager.java

📁 CRM源码This file describes some issues that should be implemented in future and how it should be imple
💻 JAVA
字号:
/* * Copyright 2006-2007 Queplix Corp. * * Licensed under the Queplix Public License, Version 1.1.1 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.queplix.com/solutions/commercial-open-source/queplix-public-license/ * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */package com.queplix.core.client.app;import com.google.gwt.user.client.Timer;import com.google.gwt.user.client.ui.DialogBox;import com.queplix.core.client.app.rpc.RPC;import com.queplix.core.client.common.ui.DialogAnswerListener;import com.queplix.core.client.common.ui.DialogHelper;import com.queplix.core.client.common.ui.WindowHelper;/** * User session manager. * @author Sultan Tezadov * @since 1 Mar 2007 */public abstract class UserSessionManager {    private static Timer timer;    private static Timer dialogTimer;    private static int warningAfterMillis;    private static int warningForMinutes;        /**     * Initialization.     * @param sessionTimeoutMinutes user session timeout value     * @param sessionTimeoutWarnBeforeMinutes the number of minutes before     *      session times out a warning dialog will be displayed     */    public static void init(int sessionTimeoutMinutes,            int sessionTimeoutWarnBeforeMinutes) {        if (sessionTimeoutMinutes <= 0) return;        if (sessionTimeoutWarnBeforeMinutes <= 0) return;        int warningAfterMinutes = sessionTimeoutMinutes                - sessionTimeoutWarnBeforeMinutes                - 1; // 1 minute reserved for inaccuracy        if (warningAfterMinutes <= 0) return;                timer = new Timer() {            public void run() {                showWarning();            }        };        warningAfterMillis = warningAfterMinutes * 60000;        warningForMinutes = sessionTimeoutWarnBeforeMinutes;        resetTimer();    }        /**     * Reset timer for session expiration warning display.     */    public static void resetTimer() {        if (timer != null) {            timer.schedule(warningAfterMillis);        }    }        private static void showWarning() {        String question =                "You session will timeout in " + warningForMinutes +                " minutes. Press OK to stay connected or Log Off to " +                "terminate your session.";        int answerSet = DialogHelper.OK  +  DialogHelper.LOG_OFF;        DialogAnswerListener listener = new DialogAnswerListener() {            public void anserIs(int answer) {                dialogTimer.cancel();                processChoice(answer == DialogHelper.LOG_OFF);            }        };        final DialogBox dialog =                DialogHelper.showQuestionDialog(question, answerSet, listener);        if (dialogTimer == null) {            dialogTimer = new Timer() {                public void run() {                    processNoChoice(dialog);                }            };        }        int warningForMillis = warningForMinutes * 60000;        dialogTimer.schedule(warningForMillis);    }        private static void processChoice(boolean logout) {        if (logout) {            logout();        } else {            keepSessionAlive();        }    }        private static void processNoChoice(DialogBox dialog) {        // the user has not made any choice        dialog.hide();        processChoice(true); // logout    }        /**     * Log out from the application without confirmations.     */    public static void logout() {        RPC.QAsyncCallback callback = new RPC.QAsyncCallback() {            public void onRequestEnded(boolean success, Object result) {                if (success) {                    WindowHelper.navigate("Logout.html");                }            }        };        RPC.getRPC().logout(callback);    }        /**     * Make a keep alive call to refresh session timeout counter.     */    public static void keepSessionAlive() {        RPC.QAsyncCallback callback = new RPC.QAsyncCallback() {            public void onRequestEnded(boolean success, Object result) {            }        };        RPC.getRPC().keepSessionAlive(callback);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -