/* @(#)SumPanelWithHalo.java   22 September 2005 */

/* Useful imports */

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;

/*
 * Added by Richard Rasala
 * 
 * Added main to launch program directly.
 */

public class Leinung_QuadraticFormula extends TablePanel {
    
    private static int width =
        TextFieldView.getSampleWidth(20, '0');
    
    private TextFieldView view1 =
        new TextFieldView("0", width);
    
    private TextFieldView view2 =
        new TextFieldView("0", width);
    
    private TextFieldView view3 =
        new TextFieldView("0", width);
    
    private TextFieldView Answer1 =
        new TextFieldView("0", width);
    
    private TextFieldView Answer2 =
        new TextFieldView("0", width);
        
    private SimpleAction quadAction =
        new SimpleAction("Find Answers") {
            public void perform() { quadform(); }
        
    };
    
    private Object[][] dataStuff =
        new Object[][] {
            { "x² coefficient", new Halo(view1) },
            { "x coefficient", new Halo(view2) },
            { "y-intercept", new Halo(view3) },
            { "Answer #1", new Halo(Answer1) },
            { "Answer #2", new Halo(Answer2) }
    };
    
    private TablePanel dataPanel =
        new TablePanel(
            dataStuff, 10, 10, WEST);
   
    private Object[] mainStuff =
        new Object[] { dataPanel, quadAction };
    
    private TablePanel mainPanel =
        new TablePanel(
            mainStuff, VERTICAL, 10, 10, CENTER);
    
    
    public Leinung_QuadraticFormula() {
        add(new Halo(mainPanel, 10, 10));
        addListeners();
        
        frame("Quadratic Equationer");
    }
    
    private void quadform() {
        double A = view1.demandDouble();
        double B = view2.demandDouble();
        double C = view3.demandDouble();
              
        double a = (-B + (Math.sqrt((B * B) - (4 * A * C)))) / (2 * A);
        double b = (-B - (Math.sqrt((B * B) - (4 * A * C)))) / (2 * A);
        
        Answer1.setViewState(a + "");
        Answer2.setViewState(b + "");
    }
    
    private void addListeners() {
        view1.addActionListener(quadAction);
        view2.addActionListener(quadAction);
        view3.addActionListener(quadAction);
        Answer1.addActionListener(quadAction);
        Answer2.addActionListener(quadAction);
    }
    
    /*
     * Added by Richard Rasala
     */
    public static void main(String[] args) {
        new Leinung_QuadraticFormula();
    }
    
}

