01: /*=============================================================================
02: * Copyright Texas Instruments 2002. All Rights Reserved.
03: *
04: * This program is free software; you can redistribute it and/or modify
05: * it under the terms of the GNU General Public License as published by
06: * the Free Software Foundation; either version 2 of the License, or
07: * (at your option) any later version.
08: *
09: * This program is distributed in the hope that it will be useful,
10: * but WITHOUT ANY WARRANTY; without even the implied warranty of
11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12: * GNU General Public License for more details.
13: *
14: * You should have received a copy of the GNU General Public License
15: * along with this program; if not, write to the Free Software
16: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17: */
18:
19: package ti.chimera.registry;
20:
21: import oscript.data.Value;
22: import oscript.data.JavaBridge;
23:
24: /**
25: * Interface implemented by subscribers to the creation of a node. Node
26: * deletion events are with respect to the registry node tree, ie. the event
27: * occurs when the node is removed from it's parent directory.
28: *
29: * @author ;Rob Clark;a0873619;San Diego;;
30: * @version 0.1
31: */
32: public interface NodeDeletionSubscriber {
33: /**
34: * Called when the node is deleted (ie. removed from it's parent)
35: *
36: * @param node the node deleted
37: */
38: public void nodeDeleted(Node node);
39:
40: /**
41: * An implementation of the <code>NodeDeletionSubscriber</code> for script
42: * functions.
43: */
44: public class ScriptFunctionNodeDeletionSubscriber implements
45: NodeDeletionSubscriber {
46: private Value fxn;
47:
48: /**
49: * Class Constructor
50: *
51: * @param fxn the script function to call
52: */
53: public ScriptFunctionNodeDeletionSubscriber(Value fxn) {
54: this .fxn = fxn;
55: }
56:
57: /**
58: * delegate to the script function
59: */
60: public void nodeDeleted(Node node) {
61: fxn.callAsFunction(new Value[] { JavaBridge
62: .convertToScriptObject(node) });
63: }
64:
65: /**
66: * Overload equals() to be <code>true</code> if the wrapped fxns
67: * are equal, so add/remove from list, etc., works right.
68: */
69: public boolean equals(Object obj) {
70: return (obj instanceof ScriptFunctionNodeDeletionSubscriber)
71: && ((ScriptFunctionNodeDeletionSubscriber) obj).fxn
72: .unhand().equals(fxn.unhand());
73: }
74:
75: /**
76: * Overload hashCode() so add/remove from list, etc., works right.
77: */
78: public int hashCode() {
79: return fxn.hashCode();
80: }
81: }
82: }
83:
84: /*
85: * Local Variables:
86: * tab-width: 2
87: * indent-tabs-mode: nil
88: * mode: java
89: * c-indentation-style: java
90: * c-basic-offset: 2
91: * eval: (c-set-offset 'substatement-open '0)
92: * eval: (c-set-offset 'case-label '+)
93: * eval: (c-set-offset 'inclass '+)
94: * eval: (c-set-offset 'inline-open '0)
95: * End:
96: */
|