1/*
2 * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25package java.awt.desktop;
26
27/**
28 * Event sent when the user session has been changed.
29 *
30 * Some systems may provide a reason of a user session change.
31 *
32 * @see UserSessionListener#userSessionActivated(UserSessionEvent)
33 * @see UserSessionListener#userSessionDeactivated(UserSessionEvent)
34 *
35 * @since 9
36 */
37public final class UserSessionEvent extends AppEvent {
38
39    private static final long serialVersionUID = 6747138462796569055L;
40
41    private final Reason reason;
42
43    /**
44     * Kinds of available reasons of user session change.
45     */
46    public static enum Reason {
47        /**
48         * The system does not provide a reason for a session change.
49         */
50        UNSPECIFIED,
51
52        /**
53         * The session was connected/disconnected to the console terminal.
54         */
55        CONSOLE,
56
57        /**
58         * The session was connected/disconnected to the remote terminal.
59         */
60        REMOTE,
61
62        /**
63         * The session has been locked/unlocked.
64         */
65        LOCK
66    }
67
68    /**
69     * Constructs a {@code UserSessionEvent}
70     *
71     * @param reason of session change
72     */
73    public UserSessionEvent(Reason reason) {
74        this.reason = reason;
75    }
76
77    /**
78     * Gets a reason of the user session change.
79     *
80     * @return reason a reason
81     * @see Reason#UNSPECIFIED
82     * @see Reason#CONSOLE
83     * @see Reason#REMOTE
84     * @see Reason#LOCK
85     */
86    public Reason getReason() {
87        return reason;
88    }
89}
90