/**
 * FILE: Person.java
 * AUTHOR: Ivan J Leichtling
 * INERNET: ivan@columbia.edu
 * 
 * This file defines a Person, the super class of Man and Woman.
 */
import java.util.* ;
import java.awt.*;

public class Person
{
  protected Vector vPreferences;
  protected String sName;
  protected Person fiancee;
  protected boolean fEngaged;
  protected int    i_Sex;
  protected PersonButton pButton;
  protected TextArea taSpew;
  
  public final static int MALE = -1;
  public final static int FEMALE = 1;

  public Person( String sName, TextArea ta )
  {
    this.sName = sName;
    taSpew = ta;
    vPreferences = new Vector();
    setFiancee( null );
    setEngaged( false );
    setButton( null );
  }

  public void reset()
  {
    vPreferences = new Vector();
    setFiancee( null );
    setEngaged( false );
  }
  
  public void randomPrefs( Vector v, Random rand )
  {
    while( !v.isEmpty() ) {
      int i = Math.abs( rand.nextInt() ) % v.size();
      Object o = v.elementAt( i );
      v.removeElementAt( i );
      vPreferences.addElement( o );
    }
  }

  public void printPrefs()
  {
    print( sName + "\'s Preferences are:" );

    Enumeration e = vPreferences.elements();
    while( e.hasMoreElements() ) {
      Person p = (Person) e.nextElement();
      
      print( p.getName() );
    }

    print( "" );
  }

  public void dump()
  {
    print( getFiancee().getName() + " breaks off the enagagement with " + 
	   getName() );

    setFiancee( null );
    setEngaged( false );
  }

  public void setFiancee( Person p )
  {
    fiancee = p;
  }
  
  public Person getFiancee()
  {
    return( fiancee );
  }
  
  public void setEngaged( boolean b )
  {
    fEngaged = b;
  }
  
  public boolean getEngaged() 
  {
    return( fEngaged );
  }

  public void setName( String s )
  {
    sName = s;
  }
  
  public String getName()
  {
    return( sName );
  }

  public void setSex( int i )
  {
    i_Sex = i;
  }

  public int getSex()
  {
    return( i_Sex );
  }

  public PersonButton getButton()
  {
    return( pButton );
  }
  
  public void setButton( PersonButton pb )
  {
    pButton = pb;
  }
  
  public Enumeration getPreferences()
  {
    return( vPreferences.elements() );
  }

  void print( String s )
  {
    taSpew.appendText( "\n" + s );
    int len = taSpew.getText().length();
    taSpew.select( len, len );
  }
}



      

