
import java.awt.*;
import java.applet.*;

public class LagrangeDemo
  extends Applet
{
  private Panel ctlPan;
    private Panel cmdPan;
      private Label lbPoints;
      private Choice chPoints;
      private Checkbox cbContrib;
  private LagrangePanel lagPan;

  private int nPts = 5;

  public LagrangeDemo()
  {
    setLayout( new BorderLayout() );
    ctlPan = new Panel();
    ctlPan.setLayout( new BorderLayout() );
    cmdPan = new Panel();
    lbPoints = new Label( "Number of points" );
    chPoints = new Choice();
    int i;
    for( i = 2; i < 8; i++ )
      chPoints.addItem( "" + i );
    chPoints.select( "" + nPts );
    cbContrib = new Checkbox( "Show Contribution due to each y", true );
    cmdPan.add( lbPoints );
    cmdPan.add( chPoints );
    cmdPan.add( cbContrib );
    ctlPan.add( "Center", cmdPan );
    lagPan = new LagrangePanel( 500, 500 );
    lagPan.init( nPts );
    add( "North", ctlPan );
    add( "Center", lagPan );
  }

  public boolean handleEvent( Event evt )
  {
    if( evt.id == Event.ACTION_EVENT ) {
      if( evt.target == cbContrib ) {
        lagPan.showContributions( cbContrib.getState() );
      }
      if( evt.target == chPoints ) {
        int n = Integer.parseInt( chPoints.getSelectedItem() );
        if( nPts != n ) {
          nPts = n;
          lagPan.init( nPts );
        }
      }
    }
    return super.handleEvent( evt );
  }

  public static void main( String[] args )
  {
    LagrangeDemo p = new LagrangeDemo();
    KFrame fr = new KFrame( "Lagrange's Interpolation Formula" );
    fr.add( "Center", p );
    fr.pack();
    fr.show();
  }
}
