KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > prefuse > data > expression > AbstractExpression


1 package prefuse.data.expression;
2
3 import prefuse.data.Tuple;
4 import prefuse.data.event.ExpressionListener;
5 import prefuse.util.collections.CopyOnWriteArrayList;
6
7 /**
8  * Abstract base class for Expression implementations. Provides support for
9  * listeners and defaults every Expression evaluation method to an
10  * unsupported operation.
11  *
12  * @author <a HREF="http://jheer.org">jeffrey heer</a>
13  */

14 public abstract class AbstractExpression
15     implements Expression, ExpressionListener
16 {
17     private CopyOnWriteArrayList m_listeners = new CopyOnWriteArrayList();
18     
19     /**
20      * @see prefuse.data.expression.Expression#visit(prefuse.data.expression.ExpressionVisitor)
21      */

22     public void visit(ExpressionVisitor v) {
23         v.visitExpression(this);
24     }
25
26     /**
27      * @see prefuse.data.expression.Expression#addExpressionListener(prefuse.data.event.ExpressionListener)
28      */

29     public final void addExpressionListener(ExpressionListener lstnr) {
30         if ( !m_listeners.contains(lstnr) ) {
31             m_listeners.add(lstnr);
32             addChildListeners();
33         }
34     }
35     
36     /**
37      * @see prefuse.data.expression.Expression#removeExpressionListener(prefuse.data.event.ExpressionListener)
38      */

39     public final void removeExpressionListener(ExpressionListener lstnr) {
40         m_listeners.remove(lstnr);
41         if ( m_listeners.size() == 0 )
42             removeChildListeners();
43     }
44
45     /**
46      * Indicates if any listeners are registered with this Expression.
47      * @return true if listeners are registered, false otherwise
48      */

49     protected final boolean hasListeners() {
50         return m_listeners != null && m_listeners.size() > 0;
51     }
52     
53     /**
54      * Fire an expression change.
55      */

56     protected final void fireExpressionChange() {
57         Object JavaDoc[] lstnrs = m_listeners.getArray();
58         for ( int i=0; i<lstnrs.length; ++i ) {
59             ((ExpressionListener)lstnrs[i]).expressionChanged(this);
60         }
61     }
62     
63     /**
64      * Add child listeners to catch and propagate sub-expression updates.
65      */

66     protected void addChildListeners() {
67         // nothing to do
68
}
69
70     /**
71      * Remove child listeners for sub-expression updates.
72      */

73     protected void removeChildListeners() {
74         // nothing to do
75
}
76
77     /**
78      * Relay an expression change event.
79      * @see prefuse.data.event.ExpressionListener#expressionChanged(prefuse.data.expression.Expression)
80      */

81     public void expressionChanged(Expression expr) {
82         fireExpressionChange();
83     }
84     
85     // ------------------------------------------------------------------------
86
// Default Implementation
87

88     /**
89      * By default, throws an UnsupportedOperationException.
90      * @see prefuse.data.expression.Expression#get(prefuse.data.Tuple)
91      */

92     public Object JavaDoc get(Tuple t) {
93         throw new UnsupportedOperationException JavaDoc();
94     }
95
96     /**
97      * By default, throws an UnsupportedOperationException.
98      * @see prefuse.data.expression.Expression#getInt(prefuse.data.Tuple)
99      */

100     public int getInt(Tuple t) {
101         throw new UnsupportedOperationException JavaDoc();
102     }
103
104     /**
105      * By default, throws an UnsupportedOperationException.
106      * @see prefuse.data.expression.Expression#getLong(prefuse.data.Tuple)
107      */

108     public long getLong(Tuple t) {
109         throw new UnsupportedOperationException JavaDoc();
110     }
111
112     /**
113      * By default, throws an UnsupportedOperationException.
114      * @see prefuse.data.expression.Expression#getFloat(prefuse.data.Tuple)
115      */

116     public float getFloat(Tuple t) {
117         throw new UnsupportedOperationException JavaDoc();
118     }
119
120     /**
121      * By default, throws an UnsupportedOperationException.
122      * @see prefuse.data.expression.Expression#getDouble(prefuse.data.Tuple)
123      */

124     public double getDouble(Tuple t) {
125         throw new UnsupportedOperationException JavaDoc();
126     }
127
128     /**
129      * By default, throws an UnsupportedOperationException.
130      * @see prefuse.data.expression.Expression#getBoolean(prefuse.data.Tuple)
131      */

132     public boolean getBoolean(Tuple t) {
133         throw new UnsupportedOperationException JavaDoc();
134     }
135     
136 } // end of abstract class AbstractExpression
137
Popular Tags