package Calculator; public class OpButtonObj extends ButtonObj { public static final OpButtonObj NO_OP_BUTTON_OBJ = new OpButtonObj( Calculator.NO_OP ); private int buttonOp; private ButtonObj equalButton; private OpButtonObj( int buttonID ) { super( null, null ); this.buttonOp = buttonID; } public OpButtonObj( int op, ButtonObj equalButton, CalcTextGUI gui, CalculatorState stateObj ) { super( gui, stateObj ); this.buttonOp = op; this.equalButton = equalButton; } public void handleButton() { this.stateObj.doneReadingNumber(); if ( this.stateObj.getPendingOperation() != OpButtonObj.NO_OP_BUTTON_OBJ ) { this.equalButton.handleButton(); } else { this.stateObj.setPreviousOperand( this.gui.getValue() ); } this.stateObj.setPendingOperation( this ); } public double doOperation ( double leftOperand, double rightOperand ) { switch ( this.buttonOp ) { case Calculator.OP_MUL: return ( leftOperand * rightOperand ); case Calculator.OP_DIV: return ( leftOperand / rightOperand ); case Calculator.OP_SUB: return ( leftOperand - rightOperand ); case Calculator.OP_ADD: return ( leftOperand + rightOperand ); case Calculator.NO_OP: // fall through.... default: return ( rightOperand ); } } }