package polarDust.calculator; /* * Copyright (c) 1996 Sorin Lazareanu, All Rights Reserved. * * Permission to use, copy, modify, and distribute this software * and its documentation for NON-COMMERCIAL purposes and without * fee is hereby granted provided that this copyright notice * appears in all copies. * */ import java.applet.*; import java.awt.*; import java.net.*; /** * CalculatorApplet is a applet wrapper around calculators.
* Accepts one parameter: CALCCODE the code of the calculator.
* Values for the parameter:
* "01" simple calculator.
* "02" simple calculator with paper tape.
* "03" calculator with more operations.
* *

* The source code. * * @version 0.9, 1996.06.04 * @author Sorin Lazareanu */ public class CalculatorApplet extends Applet implements CalcConstants { String zeroFile = "zero.au"; String oneFile = "one.au"; String twoFile = "two.au"; String threeFile = "three.au"; String fourFile = "four.au"; String fiveFile = "five.au"; String sixFile = "six.au"; String sevenFile = "seven.au"; String eightFile = "eight.au"; String nineFile = "nine.au"; String addFile = "add.au"; String subFile = "sub.au"; String mulFile = "mul.au"; String divFile = "div.au"; String equFile = "equ.au"; String prcFile = "prc.au"; SoundList soundList; URL anURL; CalculatorPanel calcPanel; Thread windowThread; /** * Initializes the applet. Contains one component CalculatorPanelxx. * Gets the CALCODE applet parameter and instantiates * from CalculatorPanelxx classes - where xx is passed by CALCODE. * Starts a thread that loads sounds. */ public void init() { String code; AudioClip aClip; new CalcHashtable(); code = getParameter("CALCCODE"); if (code.equals("01")) calcPanel = new CalculatorPanel01(this); if (code.equals("02")) calcPanel = new CalculatorPanel02(this); if (code.equals("03")) calcPanel = new CalculatorPanel03(this); if (calcPanel == null) calcPanel = new CalculatorPanel01(this); configure(); try { anURL = new URL(getCodeBase().toString() + "audio/"); } catch (MalformedURLException e) { } soundList = new SoundList(this, anURL); showStatus("Loading sounds"); soundList.startLoading(zeroFile); soundList.startLoading(oneFile); soundList.startLoading(twoFile); soundList.startLoading(threeFile); soundList.startLoading(fourFile); soundList.startLoading(fiveFile); soundList.startLoading(sixFile); soundList.startLoading(sevenFile); soundList.startLoading(eightFile); soundList.startLoading(nineFile); soundList.startLoading(addFile); soundList.startLoading(subFile); soundList.startLoading(mulFile); soundList.startLoading(divFile); soundList.startLoading(equFile); soundList.startLoading(prcFile); } /** * Configures a CalculatorPanelxx. */ public void configure() { GridBagLayout gridBag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); GridBagLayoutHelper aHelper; setLayout(gridBag); c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.CENTER; c.insets = new Insets(0, 0, 0, 0); aHelper = new GridBagLayoutHelper(this, gridBag, c, 1, 1); aHelper.addComponent(0, 0, 1, 1, calcPanel); calcPanel.configure(); } /** * Plays a sound for a digit between 0 and 9. * @param iDigit the digit. */ public void digit(int iDigit) { AudioClip aClip = null; String aFileName = null; switch (iDigit) { case 1: aFileName = oneFile; break; case 2: aFileName = twoFile; break; case 3: aFileName = threeFile; break; case 4: aFileName = fourFile; break; case 5: aFileName = fiveFile; break; case 6: aFileName = sixFile; break; case 7: aFileName = sevenFile; break; case 8: aFileName = eightFile; break; case 9: aFileName = nineFile; break; case 0: aFileName = zeroFile; } if (aFileName != null) aClip = soundList.getClip(aFileName); if (aClip != null) aClip.play(); } /** * Plays a sound for an operator code. * @param iDigit the operator code (ADD, SUB, MUL, DIV, EQU, PRC) * @see polarDust.calculator.CalcConstants */ public void op(int iDigit) { AudioClip aClip = null; String aFileName = null; switch (iDigit) { case ADD: aFileName = addFile; break; case SUB: aFileName = subFile; break; case MUL: aFileName = mulFile; break; case DIV: aFileName = divFile; break; case EQU: aFileName = equFile; break; case PRC: aFileName = prcFile; } if (aFileName != null) aClip = soundList.getClip(aFileName); if (aClip != null) aClip.play(); } /** * Plays a sound for dot(.) character. */ public void dot() { AudioClip aClip; aClip = getAudioClip(anURL, "dot.au"); if (aClip != null) aClip.play(); } /** * Stops the threads in the embedded panels. */ public void stop() { calcPanel.stop(); super.stop(); } public String toString() { return "CalculatorApplet extends " + super.toString(); } }