1 /*
2  * Copyright (c) 2011, 2013, 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 
26 package sun.lwawt;
27 
28 import java.awt.Component;
29 import java.awt.Window;
30 import sun.awt.KeyboardFocusManagerPeerImpl;
31 
32 public class LWKeyboardFocusManagerPeer extends KeyboardFocusManagerPeerImpl {
33     private static final LWKeyboardFocusManagerPeer inst = new LWKeyboardFocusManagerPeer();
34 
35     private Window focusedWindow;
36     private Component focusOwner;
37 
getInstance()38     public static LWKeyboardFocusManagerPeer getInstance() {
39         return inst;
40     }
41 
LWKeyboardFocusManagerPeer()42     private LWKeyboardFocusManagerPeer() {
43     }
44 
45     @Override
setCurrentFocusedWindow(Window win)46     public void setCurrentFocusedWindow(Window win) {
47         LWWindowPeer from, to;
48 
49         synchronized (this) {
50             if (focusedWindow == win) {
51                 return;
52             }
53 
54             from = (LWWindowPeer)LWToolkit.targetToPeer(focusedWindow);
55             to = (LWWindowPeer)LWToolkit.targetToPeer(win);
56 
57             focusedWindow = win;
58         }
59 
60         if (from != null) {
61             from.updateSecurityWarningVisibility();
62         }
63 
64         if (to != null) {
65             to.updateSecurityWarningVisibility();
66         }
67     }
68 
69     @Override
getCurrentFocusedWindow()70     public Window getCurrentFocusedWindow() {
71         synchronized (this) {
72             return focusedWindow;
73         }
74     }
75 
76     @Override
getCurrentFocusOwner()77     public Component getCurrentFocusOwner() {
78         synchronized (this) {
79             return focusOwner;
80         }
81     }
82 
83     @Override
setCurrentFocusOwner(Component comp)84     public void setCurrentFocusOwner(Component comp) {
85         synchronized (this) {
86             focusOwner = comp;
87         }
88     }
89 }
90