/* @(#)SumPanelWithHalo.java   15 September 2006 */

import edu.neu.ccs.gui.*;

public class SumPanelWithHalo 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 view4 =
        new TextFieldView("0", width);
    
    private TextFieldView total =
        new TextFieldView("0", width);
    
    private SimpleAction sumAction =
        new SimpleAction("Sum Data") {
            public void perform() { sum(); }
        
    };
    
    private Object[][] dataStuff =
        new Object[][] {
            { "x1",    new Halo(view1) },
            { "x2",    new Halo(view2) },
            { "x3",    new Halo(view3) },
            { "x4",    new Halo(view4) },
            { "total", new Halo(total) }
    };
    
    private TablePanel dataPanel =
        new TablePanel(
            dataStuff, 10, 10, WEST);
    
    private Object[] mainStuff =
        new Object[] { dataPanel, sumAction };
    
    private VTable mainPanel =
        new VTable(mainStuff, 10, 10, CENTER);
    
    
    public SumPanelWithHalo() {
        add(new Halo(mainPanel, 10, 10));
        addListeners();
    }
    
    
    private void sum() {
        double x1 = view1.demandDouble();
        double x2 = view2.demandDouble();
        double x3 = view3.demandDouble();
        double x4 = view4.demandDouble();
        
        double x = x1 + x2 + x3 + x4;
        
        total.setViewState(x + "");
    }
    
    
    private void addListeners() {
        view1.addActionListener(sumAction);
        view2.addActionListener(sumAction);
        view3.addActionListener(sumAction);
        view4.addActionListener(sumAction);
    }
    
    
    public static void main(String[] args) {
        new SumPanelWithHalo().frame("Sum Panel");
    }
}

