import java.awt.*;import java.applet.Applet;import GraphPanel;public class GraphApplet extends Applet{	GraphPanel mainPanel;	TextField massFld;	TextField fuelFld;	TextField exRateFld;	TextField exVFld;	TextField cdFld;	public void init() {		Label label;		Panel panel;				// create and use main layout		LayoutManager mainLayout = new BorderLayout(2,2);		setLayout( mainLayout );				// create controls on the north (top) side		panel = new Panel();		panel.setLayout( new GridLayout(2,2, 3,3) );		panel.add(label = new Label("Mass:"));		label.setAlignment(Label.RIGHT);		panel.add(massFld = new TextField("16000", 4));		panel.add(label = new Label("Fuel:"));		label.setAlignment(Label.RIGHT);		panel.add(fuelFld = new TextField("13000", 4));		panel.add(label = new Label("CD (%):"));		label.setAlignment(Label.RIGHT);		panel.add(cdFld = new TextField("35", 4));		panel.add(label = new Label("Exh. Rate:"));		label.setAlignment(Label.RIGHT);		panel.add(exRateFld = new TextField("75", 4));		panel.add(label = new Label("Exh. Velocity:"));		label.setAlignment(Label.RIGHT);		panel.add(exVFld = new TextField("2400", 4));		panel.add(new Button("Compute"));			add("North", panel );		// create the main panel		mainPanel = new GraphPanel();		add("Center", mainPanel);		mainPanel.init();		// make up some data		double data[] = generateData();		// assign it to the graph		mainPanel.setData( data );	}		public double[] generateData() {		// set up the simulation				showStatus("Generating Data...");				Planet Earth = new Planet();		Rocket r = new Rocket(Earth);		r.mass = Integer.parseInt(massFld.getText().trim());		r.fuel_mass = Integer.parseInt(fuelFld.getText().trim());		r.exhaust_rate = Integer.parseInt(exRateFld.getText().trim());		r.V_exhaust = Integer.parseInt(exVFld.getText().trim());		r.cd = Integer.parseInt(cdFld.getText().trim()) / 100.0;		r.area = 3.6;		// area of 3x1.5 ellipse, plus a little for wings		// run the simulation, and record the data				double data[] = new double[401];		mainPanel.xScale = 2;		// ick -- should do this elsewhere		for (int t=0; t<401; t++) {			data[t] = (r.position.y - Earth.radius) / 1000.0;			r.Update();			r.Update();		}				return data;	}    public boolean action(Event ev, Object arg) {    	showStatus( "action on: " + (String)arg );		if (ev.target instanceof Button) {		    String label = (String)arg;		    if (label.equals("Compute")) {				showStatus( "Computing..." );				mainPanel.setData( generateData() );				showStatus("Redisplaying...");				mainPanel.repaint();		    }		    return true;		}		return false;	}	/*	public void paint( Graphics g ) {		mainPanel.paint(g);	}*/}