/* Sawyer_Panel,    Brian Sawyer 10/6/05*/

import edu.neu.ccs.*;
import edu.neu.ccs.gui.*;
import edu.neu.ccs.codec.*;
import edu.neu.ccs.console.*;
import edu.neu.ccs.filter.*;
import edu.neu.ccs.jpf.*;
import edu.neu.ccs.parser.*;
import edu.neu.ccs.pedagogy.*;
import edu.neu.ccs.quick.*;
import edu.neu.ccs.util.*;

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.font.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.border.*;
import java.io.*;
import java.util.*;
import java.math.*;
import java.beans.*;
import java.lang.reflect.*;
import java.net.URL;
import java.util.regex.*;
import java.text.ParseException;

public class Sawyer_Panel extends TablePanel {
	
	private static int width =
        TextFieldView.getSampleWidth(20, '0');
    
    private TextFieldView head =
        new TextFieldView("0", width);
    
    private TextFieldView body =
        new TextFieldView("0", width);
    
    private TextFieldView arms =
        new TextFieldView("0", width);
    
    private TextFieldView legs =
        new TextFieldView("0", width);
        
    private SimpleAction drawAction =
        new SimpleAction("Draw") {
            public void perform() { draw(); }
    };
    
    private Object[][] dataStuff =
        new Object[][] {
            { "Head Radius", head },
            { "Body Length", body },
            { "Arm Length", arms },
            { "Leg Length", legs }
    };
    
    private TablePanel dataPanel =
        new TablePanel(
            dataStuff, 10, 10, WEST);
    
    private BufferedPanel window
    = new BufferedPanel(400, 400);
    
    private Object[] mainStuff =
        new Object[] { window, dataPanel, drawAction };
    
    private TablePanel mainPanel =
        new TablePanel(
            mainStuff, VERTICAL, 10, 10, CENTER);
          
    public Sawyer_Panel() {
    	add(mainPanel);
    	addListeners();
    	
    	frame("Person Panel");
    }
    
    private void draw() {
        double h = head.demandDouble();
        double b = body.demandDouble();
        double a = arms.demandDouble();
        double l = legs.demandDouble();
        double b1 = (75 + h);
        double b2 = (b1 + b);
        double a1 = ((b2 + b1) / 2);
        double l1 = (l /2);
        
        window.clearSequence();
        
        XCircle headDraw = new XCircle(200,75,h);
        window.addPaintable(headDraw);
        
        XLine2D bodyDraw = new XLine2D(200,b1,200,b2);
        window.addPaintable(bodyDraw);
        
        XLine2D armDraw1 = new XLine2D(200,a1,(200 - a),125);
        window.addPaintable(armDraw1);
        
        XLine2D armDraw2 = new XLine2D(200,a1,(200 + a ),125);
        window.addPaintable(armDraw2);
        
        XLine2D legDraw1 = new XLine2D(200,b2,(200+l1),(b2 + l));
        window.addPaintable(legDraw1);
        
        XLine2D legDraw2 = new XLine2D(200,b2,(200-l1),(b2 + l));
        window.addPaintable(legDraw2);
        
        window.repaint();
    }
    
    private void addListeners() {
        head.addActionListener(drawAction);
        body.addActionListener(drawAction);
        arms.addActionListener(drawAction);
        legs.addActionListener(drawAction);
        
    }
            

}

