// compiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://kpdus.tripod.com/jad.html // Decompiler options: packimports(3) // Source File Name: C:\Sergey\Java\Plota\Calca.java import java.applet.Applet; import java.applet.AppletContext; import java.awt.*; import java.io.*; import java.net.*; import graphs.JSuperSlider; import javax.swing.*; import java.util.*; public class Calca extends Applet implements Runnable, Tokens { public void processLine(String text) { m_Program.processLine(text.trim() + "\n"); } public void start() { System.out.println("--- Calca is now running ---"); if(m_Runner == null) { m_Runner = new Thread(this); m_Runner.start(); } m_PanelOut.start(); } public void stop() { if(m_Runner != null) { m_Runner.stop(); m_Runner = null; } m_PanelOut.stop(); } public void setTextField() { m_TextFieldXmin.setText(Double.toString(m_Program.m_Xmin)); m_TextFieldXmax.setText(Double.toString(m_Program.m_Xmax)); m_TextFieldNumPoints.setText(Integer.toString(m_Program.m_NumPoints)); } public void sendData(String receiverName) { Applet receiver = null; receiver = getAppletContext().getApplet(receiverName); if(receiver != null) { if(!(receiver instanceof Plota)) printlnOut("Found applet named " + receiverName + ", " + "but it's not a Plota object.\n"); else ((Plota)receiver).getData(m_Program.m_NumPoints, m_Program.m_Xarrs, m_Program.m_Yarrs); } else { printlnOut("Couldn't find any applet named " + receiverName + ".\n"); } } public Calca() { m_pszX = 300; m_pszY = 300; m_bInvalid = true; m_Program = new Program(this); setFont(new Font("Helvetica", 1, 12)); } public void clearOut() { m_PanelOut.clear(); } public void printlnOut(String str) { m_PanelOut.println(str); } public void printstrOut(String str) { m_PanelOut.printstr(str); } public int isNumber(String str) { try { int i=Integer.parseInt(str); return i; } catch(Exception e) { return -1; } } public void run() { try { // Open an input stream URL addr=new URL(this.getCodeBase().getProtocol(), this.getCodeBase().getHost(), this.getCodeBase().getPort(), this.getCodeBase().getPath()+"Equations.txt"); DataInputStream din = new DataInputStream(addr.openStream()); int i=isNumber(din.readLine()); // traverse the file until it finds the current equation's marker while ((i!=eqNum)||(i==-1)) { i=isNumber(din.readLine()); } //processLine("numpoints=400"); //numpoints=400 always processLine("numpoints=800"); //numpoints=800 always if (true && ((newxmin_value != start_value) || (newxmax_value != start_value))) { // xmin and xmax have been manually set here String regline1 = "xmin=" + Double.toString((double)newxmin_value); String regline2 = "xmax=" + Double.toString((double)newxmax_value); String unused = din.readLine(); unused = din.readLine(); processLine(regline1); processLine(regline2); System.out.println("Using manual xmin and xmax values"); } else { String regline1 = din.readLine(); String regline2 = din.readLine(); processLine(regline1); processLine(regline2); System.out.println("Using file xmin and xmax values: " + regline1 + "\n" + regline2); System.out.println("This should be run at the very beginning."); } Vector equations = new Vector(); while ( ((i!=(eqNum+1))||(i==-1)) && (din.available()>0)) { String toadd = din.readLine(); i = isNumber(toadd); equations.add(toadd); System.out.println("Adding [" + toadd + "] to the DB"); System.out.println("Available bytes left: ["+din.available()+"]"); } int last_element_index = equations.size()-1; // If it's at the end of the file, take the last value added to the array if (din.available()>0) { last_element_index--; } String last_element = (String)equations.elementAt(last_element_index); //System.out.println("Using [" + last_element + "] as the last element"); //processLine(last_element); // the vector "equations" contains all the equation strings that we want to use. for (int graphnum = 0; graphnum <= last_element_index; graphnum++) { String touse = (String)equations.elementAt(graphnum); m_Program.current_equation = graphnum; System.out.println("Adding equation [" + touse + "] as #" + m_Program.current_equation); processLine(touse); } din.close(); } catch (IOException e) { System.err.println ("Unable to read from file"); System.exit(-1); } do { if(m_bInvalid) { repaint(); m_bInvalid = false; } try { Thread.sleep(1000L); } catch(InterruptedException interruptedexception) { } } while(true); } public boolean action(Event evt, Object what) { if(evt.target == m_TextFieldXmin) processLine("xmin=" + m_TextFieldXmin.getText()); if(evt.target == m_TextFieldXmax) processLine("xmax=" + m_TextFieldXmax.getText()); if(evt.target == m_TextFieldNumPoints) processLine("numpoints=" + m_TextFieldNumPoints.getText()); return false; } public void getTextFields() { m_Program.m_Var.setValue("xmin", Double.valueOf(m_TextFieldXmin.getText()).doubleValue()); m_Program.m_Var.setValue("xmax", Double.valueOf(m_TextFieldXmax.getText()).doubleValue()); m_Program.m_Var.setValue("numpoints", Double.valueOf(m_TextFieldNumPoints.getText()).doubleValue()); } private final double start_value = 0.002156; // pick something unique that's not likely to be an actual value private double newxmin_value = start_value; private double newxmax_value = start_value; public void setParam(double p1, double p2, double p3, double p4, double p5, double p6) { m_Program.m_Var.setValue("pOne",p1); m_Program.m_Var.setValue("pTwo",p2); m_Program.m_Var.setValue("pThree",p3); m_Program.m_Var.setValue("pFour",p4); m_Program.m_Var.setValue("pFive",p5); m_Program.m_Var.setValue("pSix",p6); this.stop(); this.start(); } public void setParam(double p1, double p2, double p3, double p4, double p5, double p6, double newxmin, double newxmax){ newxmin_value = newxmin; newxmax_value = newxmax; System.out.println("Calc reading new xmin [" + newxmin + "] and new xmax [" + newxmax + "]"); setParam(p1, p2, p3, p4, p5, p6); /* // It seems to be re-reading the xmin and xmax from the data file every time. // m_Program.m_Var.setValue("xmin",newxmin); // if the later 2 lines work, do we still need these 2? m_Program.m_Var.setValue("xmax",newxmax); // 2 m_TextFieldXmin.setText(Double.toString(newxmin)); // well, it seems like these "later 2 lines" m_TextFieldXmax.setText(Double.toString(newxmax)); // don't work either. */ } public void init() { eqNum = -1; try { eqNum = Integer.parseInt(getParameter("eqNum")); } catch(Exception e){ e.printStackTrace(); } GridBagLayout gridBag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); setLayout(gridBag); m_PanelOut = new PanelOut(this); c.gridwidth = 0; c.anchor = 10; c.fill = 1; c.weightx = 1.0D; c.weighty = 1.0D; gridBag.setConstraints(m_PanelOut, c); add(m_PanelOut); m_PanelSrc = new PanelSrc(this); c.anchor = 10; c.fill = 2; c.weightx = 0.0D; c.weighty = 0.0D; gridBag.setConstraints(m_PanelSrc, c); add(m_PanelSrc); Label labelXmin = new Label("xmin: ", 2); c.gridwidth = 1; gridBag.setConstraints(labelXmin, c); add(labelXmin); m_TextFieldXmin = new TextField("0.0", 7); c.gridwidth = 0; gridBag.setConstraints(m_TextFieldXmin, c); add(m_TextFieldXmin); Label labelXmax = new Label("xmax: ", 2); c.gridwidth = 1; gridBag.setConstraints(labelXmax, c); add(labelXmax); m_TextFieldXmax = new TextField("10.0", 7); c.gridwidth = 0; gridBag.setConstraints(m_TextFieldXmax, c); add(m_TextFieldXmax); Label labelNumPoints = new Label("numpoints: ", 2); c.gridwidth = 1; gridBag.setConstraints(labelNumPoints, c); add(labelNumPoints); m_TextFieldNumPoints = new TextField("200", 7); c.gridwidth = 1; gridBag.setConstraints(m_TextFieldNumPoints, c); add(m_TextFieldNumPoints); validate(); } private Thread m_Runner; public int eqNum; private int m_pszX; private int m_pszY; private boolean m_bInvalid; PanelSrc m_PanelSrc; PanelOut m_PanelOut; Program m_Program; FileInputStream fin; TextField m_TextFieldXmin; TextField m_TextFieldXmax; TextField m_TextFieldNumPoints; }