//===================================================================== // File: LorenzApplet.java // // Applied Math 303, Term Project // Blair Fraser, 2303725 //===================================================================== import java.applet.Applet; import java.awt.*; import java.lang.*; public class LorenzApplet extends Applet implements Runnable { LorenzCanvas equationCanvas; Thread thread; Button stopStart; TextField xText, yText, zText; public void init() { setLayout(new BorderLayout()); //---------------- // Get parameters //---------------- String str = new String(); str = getParameter("initial_x"); double initialx = Double.valueOf(str).doubleValue(); str = getParameter("initial_y"); double initialy = Double.valueOf(str).doubleValue(); str = getParameter("initial_z"); double initialz = Double.valueOf(str).doubleValue(); str = getParameter("time_step"); double stepSize = Double.valueOf(str).doubleValue(); str = getParameter("interface_on"); boolean buttonsOn=true; if(str!=null){ Boolean.valueOf(str).booleanValue();} str = getParameter("maximum_x"); double domainMaxx = Double.valueOf(str).doubleValue(); str = getParameter("minimum_x"); double domainMinx = Double.valueOf(str).doubleValue(); str = getParameter("maximum_y"); double domainMaxy = Double.valueOf(str).doubleValue(); str = getParameter("minimum_y"); double domainMiny = Double.valueOf(str).doubleValue(); //---------------------------- // Create the equation canvas //---------------------------- equationCanvas = new LorenzCanvas(); equationCanvas.setInitialState(0.0, initialx, initialy, initialz); equationCanvas.setDomain(domainMaxx,domainMinx,domainMaxy,domainMiny); equationCanvas.setTimeStep(stepSize); //----------------------------- // Create buttons if nessasary //----------------------------- if(buttonsOn) { //------------------------- // Parameter 1 = initial x //------------------------- Panel param1Panel = new Panel(); param1Panel.setLayout(new BorderLayout()); param1Panel.add("West", new Label("Initial x")); xText = new TextField(initialx+"", 8); param1Panel.add("East", xText); //------------------------- // Parameter 2 = initial y //------------------------- Panel param2Panel = new Panel(); param2Panel.setLayout(new BorderLayout()); param2Panel.add("West", new Label("Initial y")); yText = new TextField(initialy+"", 8); param2Panel.add("East", yText); Panel param3Panel = new Panel(); param3Panel.setLayout(new BorderLayout()); param3Panel.add("West", new Label("initial z")); zText = new TextField(initialz+"", 8); param3Panel.add("East", zText); Panel panelNo1 = new Panel(); panelNo1.setLayout(new GridLayout(1, 3)); panelNo1.add(param1Panel); panelNo1.add(param2Panel); panelNo1.add(param3Panel); //------------------------------------------- // Control Bar Panel, entire user interface. //------------------------------------------- Panel controlBar = new Panel(); controlBar.setLayout(new BorderLayout()); stopStart = new Button("Restart with new settings"); controlBar.add("North", stopStart); controlBar.add("South", panelNo1); add("South", controlBar); } else { //------------------------------------------------- // If interface is off, just add a restart button. //------------------------------------------------- add("South", new Button("Restart")); } add("Center",equationCanvas); show(); } //===================================================================== // start // // Start the thread. //===================================================================== public void start() { thread = new Thread(this); thread.start(); } //===================================================================== // stop // // Stop the thread. //===================================================================== public void stop() { if(thread != null) { thread.stop(); thread = null; } } //===================================================================== // run // // Run the thread, this is the main loop of the applet. //===================================================================== public void run() { while(true) { try { thread.sleep(25); }catch(InterruptedException e) { break; } equationCanvas.increment(); equationCanvas.repaint(); } } //===================================================================== // handle action // // How to handle a button click. //===================================================================== public boolean action(Event evt, Object arg) { if(evt.target instanceof Button) { if(arg.equals("Restart with new settings")) { double initx = Double.valueOf(xText.getText()).doubleValue(); double inity = Double.valueOf(yText.getText()).doubleValue(); double initz = Double.valueOf(zText.getText()).doubleValue(); equationCanvas.setInitialState(0.0, initx, inity, initz); equationCanvas.restart(); } else if(arg.equals("Restart")) { equationCanvas.restart(); } return(true); } return(false); } }