package Calculator; public class ButtonHandler implements Runnable { private Thread spirit; private Calculator gui; private CalculatorState stateObj = new CalculatorState(); private ButtonObj[] buttonObjs = new ButtonObj[Calculator.LAST]; public ButtonHandler( Calculator realGUI ) { this.gui = realGUI; CalcTextGUI textGUI = new CalcTextGUI( realGUI ); for ( int i = 0; i < 10; i++ ) { this.buttonObjs[i] = new NumButtonObj( i, textGUI, this.stateObj ); } this.buttonObjs[Calculator.DOT] = new DotButtonObj( this.buttonObjs[0], textGUI, this.stateObj ); ButtonObj equalButton = this.buttonObjs[Calculator.EQUALS] = new EqualButtonObj( textGUI, this.stateObj ); this.buttonObjs[Calculator.OP_DIV] = new OpButtonObj( Calculator.OP_DIV, equalButton, textGUI, this.stateObj ); this.buttonObjs[Calculator.OP_MUL] = new OpButtonObj( Calculator.OP_MUL, equalButton, textGUI, this.stateObj ); this.buttonObjs[Calculator.OP_ADD] = new OpButtonObj( Calculator.OP_ADD, equalButton, textGUI, this.stateObj ); this.buttonObjs[Calculator.OP_SUB] = new OpButtonObj( Calculator.OP_SUB, equalButton, textGUI, this.stateObj ); this.buttonObjs[Calculator.CLEAR] = new ClearButtonObj( textGUI, this.stateObj ); this.spirit = new Thread ( this ); this.spirit.start(); } public void run () { while (true) { int buttonID = this.gui.getButton(); this.buttonObjs[buttonID].handleButton(); } } }