Future Computing Environments

ContactManager Wrapper Code

// A G E N T
// .   .   .

// ContactManager.java

// Wrapper for ContactApplet

// (c) Andy Wood ... 1996
//  modified by Anind K. Dey ... 1997


// ****************************************************************************

package cyberdesk.acton.wrapper;

import ContactManager.*;

import java.util.*;
import cyberdesk.cameo.*;
import cyberdesk.types.NameEmail;
import cyberdesk.types.Name;
import cyberdesk.types.EmailAddress;

// ****************************************************************************

public class ContactManager extends ContactApplet implements CameoObject, Observer {

  static CameoObjectImpl cameo; 
  private ObservableObject selectObject;

  public void init()
    {
    super.init();
    CameoInterface[] interfaces = new CameoInterface[ 1 ];
    interfaces[ 0 ] = new CameoInterface( "select", null );
    cameo = new CameoObjectImpl( this, interfaces, true );
    selectObject = selected;
    selectObject.addObserver(this);

    try
      {
      CameoProperty[] properties = new CameoProperty[ 2 ];
      properties[ 0 ] = new CameoProperty( "lookup", Class.forName( "cyberdesk.types.Name" ),
                                           "Lookup an entry for the name in the ContactManager" );
      properties[ 0 ] = new CameoProperty( "enter", Class.forName( "cyberdesk.types.NameEmail" ),
                                           "Lookup an entry for the name in the ContactManager" );
      interfaces = new CameoInterface[ 1 ];
      interfaces[ 0 ] = new CameoInterface( "method", properties );
      }
    catch ( ClassNotFoundException e )
      {
      System.out.println( "ContactApplet: class Name not found" );
      }
    cameo = new CameoObjectImpl( this, interfaces, true );
    }


  public static void selected (Object o) {
    CameoMessage msg = new CameoMessage();
    msg.setField(msg.PROPERTY,"selection");
    if (o instanceof java.net.URL) {
      msg.setField(msg.DATA, o);
      msg.setField(":type", new Integer(1));
    }
    else if (o instanceof cyberdesk.types.Name) {
      msg.setField(msg.DATA, o);
      msg.setField(":type", new Integer(2));
    }
    else if (o instanceof cyberdesk.types.EmailAddress) {
      msg.setField(msg.DATA, o);
      msg.setField(":type", new Integer(3));
    }
    else if (o instanceof java.lang.String) {
      if (((String)o).length() == 0) {
        msg.setField(msg.DATA, null);
        msg.setField(":type", new Integer(5));
      }
      else {
        msg.setField(msg.DATA, o);
        msg.setField(":type", new Integer(4));
      }
    }

    System.out.println("sent message");
    cameo.getObservers().observed(msg);
  }


  public void examine( CameoMessage msg ) {
    cameo.examine( msg );
  }

  public void manipulate(CameoMessage msg) {
    if ( msg.getField( msg.PROPERTY ).equals( "lookup" ) ) {
      String data = ( (Name)msg.getField( msg.DATA ) ).getName();
      String name;
      int space = data.indexOf( " " );

      if ( space != -1 ) {
        // Find the last space - so we skip any middle initials
        int last = data.lastIndexOf( " " );
        name = data.substring( last + 1 ) + ", " + data.substring( 0, space );
      }
      else {
        // If there are no spaces, we've just got one name, assume it's a surname
        name = data + ", ";
      }

      showMe( name );
    }
    else if ( msg.getField( msg.PROPERTY ).equals( "enter" ) ) {
      Name n = ((NameEmail)msg.getField(msg.DATA)).getName();
      EmailAddress ea = ((NameEmail)msg.getField(msg.DATA)).getEmail();

      String data = n.getName();
      String name;
      int space = data.indexOf( " " );

      if ( space != -1 ) {
        // Find the last space - so we skip any middle initials
        int last = data.lastIndexOf( " " );
        name = data.substring( last + 1 ) + ", " + data.substring( 0, space );
      }
      else {
        // If there are no spaces, we've just got one name, assume it's a surname
        name = data + ", ";
      }

      newNameandEmail( name,ea.toString() );
    }
  }

  public void observe(CameoMessage msg) {
    cameo.observe( msg );
  }

  public void observing( CameoMessage msg ) {
    cameo.observing( msg );
  }

  public void notobserving( CameoMessage msg ) {
    cameo.notobserving( msg );
  }

  public void update(Observable obs, Object arg) {
    selected(selectObject.getValue());
  }

}

// ****************************************************************************

Return to the CyberDesk sample code page.
Return to the CyberDesk home page.


Future Computing Environments Georgia Institute of Technology