Repository navigation
Expand file tree
/
Copy pathChainOfResponsibility.java
More file actions
90 lines (76 loc) · 1.84 KB
/
Copy pathChainOfResponsibility.java
File metadata and controls
90 lines (76 loc) · 1.84 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
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package designpatterns;
/**
*
* @author jtherrell
*/
abstract class HelpHandler {
protected static final int NO_HELP_TOPIC = -1;
public static Log log;
protected HelpHandler successor;
protected int helpTopicID;
public HelpHandler(HelpHandler successor, int helpTopicID) {
this.successor = successor;
this.helpTopicID = helpTopicID;
}
public boolean hasHelpFor(int helpTopicID) {
return this.helpTopicID == helpTopicID;
}
public void handleHelp(int helpTopicID) {
log.append("In HelpHandler...");
if (successor != null)
successor.handleHelp(helpTopicID);
}
}
class HelpWidget extends HelpHandler {
private HelpWidget parent;
public HelpWidget(HelpWidget widget, int helpTopicID) {
super(widget, helpTopicID);
parent = widget;
}
}
class HelpButton extends HelpWidget {
public HelpButton(HelpWidget widget, int helpTopicID) {
super(widget, helpTopicID);
}
@Override
public void handleHelp(int helpTopicID) {
log.append("In HelpButton...");
if (hasHelpFor(helpTopicID)) {
log.append("Button helped!");
} else {
super.handleHelp(helpTopicID);
}
}
}
class HelpDialog extends HelpWidget {
public HelpDialog(HelpWidget widget, int helpTopicID) {
super(widget, helpTopicID);
}
@Override
public void handleHelp(int helpTopicID) {
log.append("In HelpDialog...");
if (hasHelpFor(helpTopicID)) {
log.append("Dialog helped!");
} else {
super.handleHelp(helpTopicID);
}
}
}
class HelpApplication extends HelpWidget {
public HelpApplication(int helpTopicID) {
super(null, helpTopicID);
}
@Override
public void handleHelp(int helpTopicID) {
log.append("In HelpApplication...");
if (hasHelpFor(helpTopicID)) {
log.append("Application helped!");
} else {
super.handleHelp(helpTopicID);
}
}
}