// a simple calculator demonstration
// John Sklar, CED 512 - fall, 2k   
   import java.applet.Applet;
   import java.awt.*;
   import java.awt.event.*;
   public class calcstuff extends Applet implements ActionListener
   {
      TextField add1,add2;
      Button plus = new Button ("+");
      Button times = new Button ("X");
      Button minus = new Button ("-");
      Button divided = new Button ("÷");
      Button clear = new Button("Clear");
      Label answer, Banner;
      Double d1,d2;
   
      public void init()
      {
         Font bigFont = new Font("TimesRoman", Font.ITALIC, 24);
         Font opFont = new Font("Courier", Font.BOLD, 24);
      
         add1 = new TextField(10);
         add2 = new TextField(10);
         Banner = new Label ("-- Sklar's Calculator Demonstrator! --");
         answer = new Label("Enter two numbers then press an operator");
      
         plus.setFont(opFont);
         times.setFont(opFont);
         divided.setFont(opFont);
         minus.setFont(opFont);
         clear.setFont(opFont);
         answer.setFont(bigFont);
         Banner.setFont(bigFont);
         add1.setFont(bigFont);
         add2.setFont(bigFont);
      
         add (Banner);
         add (add1);
         add (plus);
         plus.addActionListener(this);         
         add (times);
         times.addActionListener(this);
         add (divided);
         divided.addActionListener(this);
         add (minus);
         minus.addActionListener(this);
         add (add2);
         add (answer);
         add (clear);
         clear.addActionListener(this);
         setBackground(Color.white);
         clear.setEnabled(false);
      }
      public void actionPerformed (ActionEvent e)
      {
         Object source = e.getSource();
         d1 = Double.valueOf(add1.getText());
         d2 = Double.valueOf(add2.getText());
         if (source == divided)
            displayAnswer(d1.doubleValue() / d2.doubleValue(),"  divided by  ");
         if (source == minus)
            displayAnswer(d1.doubleValue() - d2.doubleValue(),"  minus  ");
         if (source == times)
            displayAnswer(d1.doubleValue() * d2.doubleValue(),"  times  ");
         if (source == plus)
            displayAnswer(d1.doubleValue() + d2.doubleValue(),"  plus  ");
         if(source == clear){
            add1.setText("");
            add2.setText("");
            answer.setText ("Enter two numbers then press an operator");
            plus.setEnabled(true);
            minus.setEnabled(true);
            times.setEnabled(true);
            divided.setEnabled(true);
            clear.setEnabled(false);
         }
      }
      public void displayAnswer(double temp,String msg)
      {
         answer.setText (d1.doubleValue() + msg + d2.doubleValue()
                        + " = " + 
                        String.valueOf((double)( Math.round(temp*10000))/10000  ) ); 
         plus.setEnabled(false);
         minus.setEnabled(false);
         times.setEnabled(false);
         divided.setEnabled(false);
         clear.setEnabled(true);
      }
   }