import java.awt.*;
import WizCard;
import FrameFromInertial;
import FrameFromFrame;
import FrameFromVariable;

public class FrameInit extends WizCard
 {
  Checkbox observer,instant,frame;
  TextField name;

  Universe u;
  
  public FrameInit(Wizard w, Universe u)
   {
    super(w);
    this.u = u;

    setLayout(new GridLayout(0,1));

    if (u.lorentz_freedom)
     {
      add (new Label("There is currently no preferred frame in this universe.")); 
      add (new Label("Thus, there is no need to specify the orientation of this frame.")); 
      add (new Label("What would you like to call the inertial reference frame?"));
      add (name = new TextField("Frame O"));

      name.setSize(200,16);
     }
    else
     {
      add(new Label("How will you specify this reference frame?"));

      CheckboxGroup cg = new CheckboxGroup();
 
      add(observer = new Checkbox("As the reference frame of an inertial observer.",cg,true));
      add(instant = new Checkbox("As the instantaneous frame of a non-inertial observer.",cg,false));
      add(frame = new Checkbox("In terms of an existing reference frame.",cg,false));
     }
   }

  public void doNext()
   {
    if (u.lorentz_freedom)
     {
     }
    else
     {
      if (observer.getState())
       {
        if (u.inertialObjects.size() + u.longObjects.size() == 0)
         {
          observer.setState(false);
          System.out.println("Error: no inertial objects have been defined.");
          return;
         }
        w.addCard(new FrameFromInertial(w,u));
        return;
       }
      if (instant.getState())
       {
        if (u.variableObjects.size() == 0)
         {
          instant.setState(false);
          System.out.println("Error: no non-inertial objects have been defined.");
          return;
         }
        w.addCard(new FrameFromVariable(w,u));
        return;
       } 
      if (frame.getState())
       {
        if (u.frames.size() == 0)
         {
          frame.setState(false);
          System.out.println("Error: no existing frames have been defined.");
          return;
         }
        w.addCard(new FrameFromFrame(w,u));
        return;
       }
     }
   }
 }
