//===================================================================== // File: ChuaApplet.java // //===================================================================== import java.applet.Applet; import java.awt.*; import java.lang.*; public class ChuaApplet extends Applet implements Runnable { ChuaCanvas equationCanvas; Thread thread; Button stopStart; TextField xText, yText, zText; TextField tminx, tmaxx, tminy, tmaxy; TextField tc1, tc2, tc3, tm0, tm1; 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(); double c1=15.6, c2=1, c3=28, m0=-1.143, m1=-0.714; //---------------------------- // Create the equation canvas //---------------------------- equationCanvas = new ChuaCanvas(); 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); Panel param21Panel = new Panel(); param21Panel.setLayout(new BorderLayout()); param21Panel.add("West", new Label("Min x")); tminx = new TextField(domainMinx+"", 8); param21Panel.add("East", tminx); Panel param22Panel = new Panel(); param22Panel.setLayout(new BorderLayout()); param22Panel.add("West", new Label("Max x")); tmaxx = new TextField(domainMaxx+"", 8); param22Panel.add("East", tmaxx); Panel param23Panel = new Panel(); param23Panel.setLayout(new BorderLayout()); param23Panel.add("West", new Label("Min y")); tminy = new TextField(domainMiny+"", 8); param23Panel.add("East", tminy); Panel param24Panel = new Panel(); param24Panel.setLayout(new BorderLayout()); param24Panel.add("West", new Label("Max x")); tmaxy = new TextField(domainMaxy+"", 8); param24Panel.add("East", tmaxy); Panel suurus=new Panel(); suurus.setLayout(new GridLayout(1, 4)); suurus.add(param21Panel); suurus.add(param22Panel); suurus.add(param23Panel); suurus.add(param24Panel); Panel param31Panel = new Panel(); param31Panel.setLayout(new BorderLayout()); param31Panel.add("Center", new Label("c1")); tc1 = new TextField(c1+"", 8); param31Panel.add("East", tc1); Panel param32Panel = new Panel(); param32Panel.setLayout(new BorderLayout()); param32Panel.add("Center", new Label("c2")); tc2 = new TextField(c2+"", 8); param32Panel.add("East", tc2); Panel param33Panel = new Panel(); param33Panel.setLayout(new BorderLayout()); param33Panel.add("Center", new Label("c3")); tc3 = new TextField(c3+"", 8); param33Panel.add("East", tc3); Panel param34Panel = new Panel(); param34Panel.setLayout(new BorderLayout()); param34Panel.add("Center", new Label("m0")); tm0 = new TextField(m0+"", 8); param34Panel.add("East", tm0); Panel param35Panel = new Panel(); param35Panel.setLayout(new BorderLayout()); param35Panel.add("Center", new Label("m1")); tm1 = new TextField(m1+"", 8); param35Panel.add("East", tm1); Panel suurus3=new Panel(); suurus3.setLayout(new GridLayout(1, 5)); suurus3.add(param31Panel); suurus3.add(param32Panel); suurus3.add(param33Panel); suurus3.add(param34Panel); suurus3.add(param35Panel); //------------------------------------------- // Control Bar Panel, entire user interface. //------------------------------------------- Panel controlBar = new Panel(); controlBar.setLayout(new GridLayout(4, 1)); stopStart = new Button("Restart with new settings"); controlBar.add(stopStart); controlBar.add(panelNo1); controlBar.add(suurus); controlBar.add(suurus3); 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() { equationCanvas.restart(); 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(); double uminx = Double.valueOf(tminx.getText()).doubleValue(); double umaxx = Double.valueOf(tmaxx.getText()).doubleValue(); double uminy = Double.valueOf(tminy.getText()).doubleValue(); double umaxy = Double.valueOf(tmaxy.getText()).doubleValue(); double c1 = Double.valueOf(tc1.getText()).doubleValue(); double c2 = Double.valueOf(tc2.getText()).doubleValue(); double c3 = Double.valueOf(tc3.getText()).doubleValue(); double m0 = Double.valueOf(tm0.getText()).doubleValue(); double m1 = Double.valueOf(tm1.getText()).doubleValue(); equationCanvas.setInitialState(0.0, initx, inity, initz); equationCanvas.setDomain(umaxx, uminx, umaxy, uminy); equationCanvas.setParams(c1, c2, c3, m0, m1); equationCanvas.restart(); } else if(arg.equals("Restart")) { equationCanvas.restart(); } return(true); } return(false); } }