1 package prefuse.data.expression; 2 3 10 public abstract class BinaryExpression extends AbstractExpression { 11 12 protected int m_op; 13 protected Expression m_left; 14 protected Expression m_right; 15 16 26 protected BinaryExpression(int operation, int minOp, int maxOp, 27 Expression left, Expression right) 28 { 29 if ( operation < minOp || operation > maxOp ) { 31 throw new IllegalArgumentException ( 32 "Unknown operation type: " + operation); 33 } 34 if ( left == null || right == null ) { 36 throw new IllegalArgumentException ( 37 "Expressions must be non-null."); 38 } 39 this.m_op = operation; 40 this.m_left = left; 41 this.m_right = right; 42 } 43 44 48 public Expression getLeftExpression() { 49 return m_left; 50 } 51 52 56 public Expression getRightExpression() { 57 return m_right; 58 } 59 60 64 public void setLeftExpression(Expression e) { 65 m_left.removeExpressionListener(this); 66 m_left = e; 67 if ( hasListeners() ) e.addExpressionListener(this); 68 fireExpressionChange(); 69 } 70 71 75 public void setRightExpression(Expression e) { 76 m_right.removeExpressionListener(this); 77 m_right = e; 78 if ( hasListeners() ) e.addExpressionListener(this); 79 fireExpressionChange(); 80 } 81 82 87 public int getOperation() { 88 return m_op; 89 } 90 91 94 public void visit(ExpressionVisitor v) { 95 v.visitExpression(this); 96 v.down(); m_left.visit(v); v.up(); 97 v.down(); m_right.visit(v); v.up(); 98 } 99 100 103 protected void addChildListeners() { 104 m_left.addExpressionListener(this); 105 m_right.addExpressionListener(this); 106 } 107 108 111 protected void removeChildListeners() { 112 m_left.removeExpressionListener(this); 113 m_right.removeExpressionListener(this); 114 } 115 116 } | Popular Tags |