-
Notifications
You must be signed in to change notification settings - Fork 216
Expand file tree
/
Copy pathTwsListener.java
More file actions
105 lines (83 loc) · 3.58 KB
/
TwsListener.java
File metadata and controls
105 lines (83 loc) · 3.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// This file is part of the "IBController".
// Copyright (C) 2004 Steven M. Kearns (skearns23@yahoo.com )
// Copyright (C) 2004 - 2011 Richard L King (rlking@aultan.com)
// For conditions of distribution and use, see copyright notice in COPYING.txt
// IBController is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// IBController is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with IBController. If not, see <http://www.gnu.org/licenses/>.
package ibcontroller;
import java.awt.AWTEvent;
import java.awt.Window;
import java.awt.event.AWTEventListener;
import java.awt.event.WindowEvent;
import java.util.List;
import javax.swing.JDialog;
import javax.swing.JFrame;
class TwsListener
implements AWTEventListener {
private final List<WindowHandler> windowHandlers;
private final String logComponents;
TwsListener (List<WindowHandler> windowHandlers) {
this.windowHandlers = windowHandlers;
String logComponentsSetting = Settings.settings().getString("LogComponents", "never").toLowerCase();
switch (logComponentsSetting) {
case "activate":
case "open":
case "never":
logComponents = logComponentsSetting;
break;
case "yes":
case "true":
logComponents="open";
break;
case "no":
case "false":
logComponents="never";
break;
default:
logComponents="never";
Utils.logError("the LogComponents setting is invalid.");
break;
}
}
@Override
public void eventDispatched(AWTEvent event) {
int eventID = event.getID();
Window window =((WindowEvent) event).getWindow();
if (eventID == WindowEvent.WINDOW_OPENED ||
eventID == WindowEvent.WINDOW_ACTIVATED ||
eventID == WindowEvent.WINDOW_CLOSING ||
eventID == WindowEvent.WINDOW_CLOSED) {
logWindow(window, eventID);
}
for (WindowHandler wh : windowHandlers) {
if (wh.filterEvent(window, eventID) && wh.recogniseWindow(window)) {
wh.handleWindow(window, eventID);
break;
}
}
}
private void logWindow(Window window, int eventID) {
String event = SwingUtils.windowEventToString(eventID);
if (window instanceof JFrame) {
Utils.logToConsole("detected frame entitled: " + ((JFrame) window).getTitle() + "; event=" + event);
} else if (window instanceof JDialog) {
Utils.logToConsole("detected dialog entitled: " + ((JDialog) window).getTitle() + "; event=" + event);
} else {
Utils.logToConsole("detected window: type=" + window.getClass().getName() + "; event=" + event);
}
if ((eventID == WindowEvent.WINDOW_OPENED && (logComponents.equals("open") || logComponents.equals("activate")))
||
(eventID == WindowEvent.WINDOW_ACTIVATED && logComponents.equals("activate")))
{
Utils.logRawToConsole(SwingUtils.getWindowStructure(window));
}
}
}