// 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.