1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.htmlunit;
16
17 import java.util.EventObject;
18
19
20
21
22
23
24
25 public final class WebWindowEvent extends EventObject {
26 private final Page oldPage_;
27 private final Page newPage_;
28 private final int type_;
29
30
31 public static final int OPEN = 1;
32
33
34 public static final int CLOSE = 2;
35
36
37 public static final int CHANGE = 3;
38
39
40
41
42
43
44
45
46
47 public WebWindowEvent(
48 final WebWindow webWindow,
49 final int type,
50 final Page oldPage,
51 final Page newPage) {
52 super(webWindow);
53 oldPage_ = oldPage;
54 newPage_ = newPage;
55
56 switch (type) {
57 case OPEN:
58 case CLOSE:
59 case CHANGE:
60 type_ = type;
61 break;
62
63 default:
64 throw new IllegalArgumentException(
65 "type must be one of OPEN, CLOSE, CHANGE but got " + type);
66 }
67 }
68
69
70
71
72
73
74
75 @Override
76 public boolean equals(final Object object) {
77 if (null == object) {
78 return false;
79 }
80 if (getClass() == object.getClass()) {
81 final WebWindowEvent event = (WebWindowEvent) object;
82 return isEqual(getSource(), event.getSource())
83 && getEventType() == event.getEventType()
84 && isEqual(getOldPage(), event.getOldPage())
85 && isEqual(getNewPage(), event.getNewPage());
86 }
87 return false;
88 }
89
90
91
92
93
94 @Override
95 public int hashCode() {
96 return source.hashCode();
97 }
98
99
100
101
102
103 public Page getOldPage() {
104 return oldPage_;
105 }
106
107
108
109
110
111 public Page getNewPage() {
112 return newPage_;
113 }
114
115
116
117
118
119 public WebWindow getWebWindow() {
120 return (WebWindow) getSource();
121 }
122
123 private static boolean isEqual(final Object object1, final Object object2) {
124 final boolean result;
125
126 if (object1 == null && object2 == null) {
127 result = true;
128 }
129 else if (object1 == null || object2 == null) {
130 result = false;
131 }
132 else {
133 result = object1.equals(object2);
134 }
135
136 return result;
137 }
138
139
140
141
142
143 @Override
144 public String toString() {
145 final StringBuilder builder = new StringBuilder(80)
146 .append("WebWindowEvent(source=[")
147 .append(getSource())
148 .append("] type=[");
149 switch (type_) {
150 case OPEN:
151 builder.append("OPEN");
152 break;
153 case CLOSE:
154 builder.append("CLOSE");
155 break;
156 case CHANGE:
157 builder.append("CHANGE");
158 break;
159 default:
160 builder.append(type_);
161 break;
162 }
163 builder.append("] oldPage=[")
164 .append(getOldPage())
165 .append("] newPage=[")
166 .append(getNewPage())
167 .append("])");
168
169 return builder.toString();
170 }
171
172
173
174
175 public int getEventType() {
176 return type_;
177 }
178 }