package illusion;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;

/*
 * Title: illusion
 * Description: 
 *
 * with a bum foot, whatcha bonna boo? (as Mom says)
 * one thing I wrote a long time ago reminded me of how we write across the globe.
 * I wrote inside it some more.
 * ---------------------------------
 * inside
 *
 * 'okay, so why isnt Mr. Chen electable?'  I whisper.
 * A monstrous mountain enters our view.  Everyone's seats shake accordingly.
 * This IS a  romantic picture, I think to myself.
 * A tiny figure scales the face of the rock, only feet from its summit.
 * An insect stings my right ankle.
 * Turning to you, I ask again, 'why?', rubbing the swelling itching.
 * Looking down from the summit now, I see the climber's face
 * strained with impending glory.
 * This must be the highest mountain in the world.  The sun is just rising over
 * the Chrysler building in the distance.
 * I am sweating. "Just do it!" the climber's exhausted voice
 * penetrates the room.  From my house here in Cincinnati, I can just see
 * the whole scenario.
 *
 * outside
 *
 * From your house, in Taiwan, you must remember this.
 * In the distance, I can see the silhouette of Pilot mountain, 
 * from my house in North Carolina.
 * A searchlight pierces the clouds surrounding its knobby peak.
 * You walk towards us, gesturing in the glare of headlights.
 * As your face fills my screen,
 * I freeze frame.
 *
 * tomorrow
 *
 * You're not going to cry over her any more, he says as
 * he motions to the peak.
 * I suppose I will have to search for any keyword that will bring back that story,
 * because I've forgotten the ending, weber chen at visa.com.
 * -----------------------------------
 * Copyright: Copyright (c) 2002
 * Company: 
 * @author: denise burge, chih-min chen 
 * @version 1.0 
 */

class Moutain extends Object {
 int theFaceOfTheRock;
 int theSummit;
 int theSilhouette;
 boolean theHighestMountainInTheWorld;
}

class Sun extends Object {
  void isRisingOver (String what, int howFar){}
}

class HumanBeings extends Object {
  class Face extends Object {
   boolean stainedWithImpedingGlory;
  }
  class Voice extends Object {
   void penetrates(String what, int where){}
  }

  Face face = new Face();
  Voice exhaustedVoice = new Voice();

  void scales (int what, int how){}
}

class We extends HumanBeings {
  class OurView extends Object {
   void somethingEnter(Moutain what){}
  }

  class EveryonesSeats extends Object {
   void shakesAccordingly(){}
  }
  EveryonesSeats everyonesSeat = new EveryonesSeats();
  OurView ourView = new OurView();
  int us;
}

class I extends HumanBeings {

  class AnyKeyword extends Object {
   boolean willBringBackThatStory(){
    return true;
   }
  }
  AnyKeyword anyKeyword = new AnyKeyword();
  class House extends Object {
   int theRoom;
  }
  House myHouseInCincinnati = new House();
  House myHouseInNorthCarolina = new House();

  int myView;
  int myRightAnkle;
  int theSwellingItching;
  int myScreen;
  int theFrame;
  int me;

  fairyTale wrote (int when){
    fairyTale oldWritings = new fairyTale();
    return oldWritings;
  }
  void wrote (fairyTale where, int what){}

  void whisper (String what){}

  boolean turningTo (HumanBeings whom){ return true;}

  boolean rubbing(int what){return true;}

  void askAgain (boolean toWhom, String what, boolean doingWhat){}

  int lookingDownFrom (int where){return where;}

  void see(int where, boolean what){}

  void canJustSee (House fromWhere, int what){}

  void canSee(int howFar, int what, House fromWhere){}

  void thinkTo (Object whom, String what){}

  void suppose(int what){}

  int willHaveToSearchFor(boolean anything){return 0;}

  boolean haveForgotTheEnding(){
    return true;
  }
  
  void amSweating(){}
  
  void freeze(int asWhen, int what){}
}

class You extends HumanBeings {

 class House extends Object {
  }
 House yourHouseInTaipei = new House();

 class Face extends Object {
  int fills(int where){return 0;}
 }
 Face yourFace = new Face();

 void areCryingOver (int her, int forHowLong) {}

 void at(int where){}

 void mustRemember(House fromWhere, fairyTale what){}

 int GesturingIn(int what){return 0;}

 void walkTowards(int whom, int doingWhat){}
}

class AnInsect extends Object {
 void stings (int what){}
}

class HeadLights extends Object {
 int theGlare;
}

public class fairyTale extends Applet {

  boolean isStandalone = false;
  BorderLayout borderLayout1 = new BorderLayout();
  JButton Inside = new JButton();
  JButton Tomorrow = new JButton();
  JButton Outside = new JButton();
  JButton prologue = new JButton();
  We we = new We();
  You you = new You();
  I i = new I();
  You weberChen = new You();
  HumanBeings aTinyFigure = new HumanBeings();
  Moutain aMonstrousMountain = new Moutain();
  AnInsect anInsect = new AnInsect();
  HumanBeings theClimber = new HumanBeings();
  Sun theSun = new Sun();
  final static int ONLY_FEET_FROM_ITS_SUMMIT = 2;
  final static int THE_WHOLE_SCENARIO = 1;
  final static int NOT_ANY_MORE = 0;
  final static int VISA_DOT_COM = 0;
  final static int HER = 0;
  final static int IN_THE_DISTANCE = 1;
  final static int A_LONG_AGO = 0;
  final static int SOME_MORE = 0;

    //Get a parameter value
  public String getParameter(String key, String def) {
    return isStandalone ? System.getProperty(key, def) :
      (getParameter(key) != null ? getParameter(key) : def);
  }

  //Construct the applet
  public fairyTale() {
  }
  //Initialize the applet
  public void init() {
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  //Component initialization
  private void jbInit() throws Exception {
    Inside.setText("Inside");
    Inside.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        Inside_actionPerformed(e);
      }
    });
    this.setLayout(borderLayout1);
    Tomorrow.setText("Tomorrow");
    Tomorrow.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        Tomorrow_actionPerformed(e);
      }
    });
    Outside.setText("Outside");
    Outside.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        Outside_actionPerformed(e);
      }
    });
    prologue.setText("prologue");
    prologue.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        prologue_actionPerformed(e);
      }
    });
    this.add(Inside, BorderLayout.NORTH);
    this.add(Tomorrow, BorderLayout.CENTER);
    this.add(Outside, BorderLayout.SOUTH);
    this.add(prologue, BorderLayout.WEST);
  }
  //Get Applet information
  public String getAppletInfo() {
    return "Applet Information";
  }
  //Get parameter info
  public String[][] getParameterInfo() {
    return null;
  }

  void reminded (int whom, String what){}

  void prologue_actionPerformed(ActionEvent e) { 
    fairyTale oneThing;
    oneThing = i.wrote(A_LONG_AGO);
    oneThing.reminded(i.me, "of how we write across the globe.");
    i.wrote(this, SOME_MORE);
  }

  void Inside_actionPerformed(ActionEvent e) {

    //inside
    String words = new String("okay, so why isnt Mr. Chen electable?");
    i.whisper(words);
    we.ourView.somethingEnter(aMonstrousMountain);
    we.everyonesSeat.shakesAccordingly();
    String thought = new String("This is a romantic picture");
    i.thinkTo(i, thought);

    aTinyFigure.scales(aMonstrousMountain.theFaceOfTheRock, ONLY_FEET_FROM_ITS_SUMMIT);
    anInsect.stings(i.myRightAnkle);

    i.askAgain(i.turningTo(you), "why?", i.rubbing(i.theSwellingItching));
    i.see(i.lookingDownFrom(aMonstrousMountain.theSummit), theClimber.face.stainedWithImpedingGlory);
    aMonstrousMountain.theHighestMountainInTheWorld = true;
    theSun.isRisingOver("the Chrysler building", IN_THE_DISTANCE);

    i.amSweating();
    theClimber.exhaustedVoice.penetrates("Just do it!",i.myHouseInCincinnati.theRoom);
    i.canJustSee(i.myHouseInCincinnati, THE_WHOLE_SCENARIO);
  }

  void Outside_actionPerformed(ActionEvent e) {
    //outside
    Moutain PilotMoutain = new Moutain();
    HeadLights headLights = new HeadLights();
    you.mustRemember(you.yourHouseInTaipei, this);
    i.canSee(IN_THE_DISTANCE, PilotMoutain.theSilhouette, i.myHouseInNorthCarolina);
    you.walkTowards(we.us, you.GesturingIn(headLights.theGlare));
    i.freeze(you.yourFace.fills(i.myScreen),i.theFrame);
  }

  void Tomorrow_actionPerformed(ActionEvent e) {
    //tomorrow
    you.areCryingOver(HER,NOT_ANY_MORE);
    if (i.haveForgotTheEnding())
       i.suppose(i.willHaveToSearchFor(i.anyKeyword.willBringBackThatStory()));
    weberChen.at(VISA_DOT_COM);
  }

}