jdk
1/*
2* Copyright (c) 2016, 2021, 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*/
25
26package java.awt.desktop;27
28import java.awt.Desktop;29import java.awt.GraphicsEnvironment;30import java.awt.HeadlessException;31import java.io.Serial;32
33/**
34* Event sent when the user session has been changed. Some systems may provide a
35* reason of a user session change.
36*
37* @see UserSessionListener#userSessionActivated(UserSessionEvent)
38* @see UserSessionListener#userSessionDeactivated(UserSessionEvent)
39* @since 9
40*/
41public final class UserSessionEvent extends AppEvent {42
43/**44* Use serialVersionUID from JDK 9 for interoperability.
45*/
46@Serial47private static final long serialVersionUID = 6747138462796569055L;48
49/**50* The reason of the user session change.
51*/
52private final Reason reason;53
54/**55* Kinds of available reasons of user session change.
56*/
57public static enum Reason {58/**59* The system does not provide a reason for a session change.
60*/
61UNSPECIFIED,62
63/**64* The session was connected/disconnected to the console terminal.
65*/
66CONSOLE,67
68/**69* The session was connected/disconnected to the remote terminal.
70*/
71REMOTE,72
73/**74* The session has been locked/unlocked.
75*/
76LOCK77}78
79/**80* Constructs a {@code UserSessionEvent}.
81*
82* @param reason the reason of the user session change
83* @throws HeadlessException if {@link GraphicsEnvironment#isHeadless()}
84* returns {@code true}
85* @throws UnsupportedOperationException if Desktop API is not supported on
86* the current platform
87* @see Desktop#isDesktopSupported()
88* @see java.awt.GraphicsEnvironment#isHeadless
89*/
90public UserSessionEvent(Reason reason) {91this.reason = reason;92}93
94/**95* Gets a reason of the user session change.
96*
97* @return reason a reason
98* @see Reason#UNSPECIFIED
99* @see Reason#CONSOLE
100* @see Reason#REMOTE
101* @see Reason#LOCK
102*/
103public Reason getReason() {104return reason;105}106}
107