AddressBook code

import java.awt.*;

class AddressBook extends Frame {
   public static void main(String argv[])
   {
      new AddressBook();
   }

   AddressBook()
   {
      Container labelPanel, textPanel;

      InfoPanel infoPanel = new InfoPanel();
      AddressList list = new AddressList(infoPanel);

      add("West", list);
      add("Center", infoPanel);

      resize(500, 200);
      show();
   }    
}

class InfoPanel extends Panel {
   final int TextWidth = 40;
   final int TextHeight = 6;

   TextField nameT;
   TextField phoneT;
   TextArea addressT;

   InfoPanel()
   {
      GridBagLayout gridbag = new GridBagLayout();
      setLayout(gridbag);

      GridBagConstraints c = new GridBagConstraints();
      c.weightx = 0.0;
      c.anchor = GridBagConstraints.EAST;

      GridBagConstraints c2 = new GridBagConstraints();
      c2.gridwidth = GridBagConstraints.REMAINDER;
      c2.weightx = 1.0;
      c2.fill = GridBagConstraints.HORIZONTAL;

      Label nameL = new Label("Name");
      nameT = new TextField(TextWidth);
      Label phoneL = new Label("Phone");
      phoneT = new TextField(TextWidth);
      Label addressL = new Label("Snail Mail Address");
      addressT = new TextArea(TextHeight, TextWidth);

      add(nameL);
      add(nameT);
      add(phoneL);
      add(phoneT);
      add(addressL);
      add(addressT);

      gridbag.setConstraints(nameL, c);
      gridbag.setConstraints(nameT, c2);
      gridbag.setConstraints(phoneL, c);
      gridbag.setConstraints(phoneT, c2);
      gridbag.setConstraints(addressL, c);
      gridbag.setConstraints(addressT, c2);
   }

   public void setName(String name) {
      nameT.setText(name);
   }

   public void setPhone(String phone) {
      phoneT.setText(phone);
   }

   public void setAddress(String address) {
      addressT.setText(address);
   }
}

class SelectList extends List {
   public boolean handleEvent(Event evt) {
      switch (evt.id) {
         case Event.LIST_SELECT:
              return selected(evt, 
                        ((List) evt.target).getSelectedIndex(), 
                        ((List) evt.target).getSelectedItem());
         case Event.LIST_DESELECT:
            return deselected(evt,
                         ((List) evt.target).getSelectedIndex());
         default:
            return super.handleEvent(evt);
      }
   }

   public boolean selected(Event evt, int index, String item) {
      return false;
   }

   public boolean deselected(Event evt, int index) {
      return false;
   }
}

class Address {
   protected String name;
   protected String phone;
   protected String address;

   Address(String n, String p, String a) {
      name = n;
      phone = p;
      address = a;
   }

   public String getName() {
      return name;
   }

   public String getPhone() {
      return phone;
   }

   public String getAddress() {
      return address;
   }
}

class AddressList extends SelectList {
    protected Address list[] = new Address[4];
   private InfoPanel info;

   AddressList(InfoPanel infoPanel) {

      info = infoPanel;

      // these should be loaded from a file - just lazy
      list[0] = new Address("Jan Newmarch", 
                        "201 2422",
                        "Faculty of ISE\n" +
                        "Uni of Canberra");
      this.addItem(list[0].getName());

      list[1] = new Address("Terry Webb",
                        "201 5341",
                        "Faculty of ISE\n" +
                           "Uni of Canberra");
      this.addItem(list[1].getName());
   }

   public boolean selected(Event evt, int index, String item) {
      Address addr = list[index];

      info.setName(item);
      info.setPhone(addr.getPhone());
      info.setAddress(addr.getAddress());
      return true;
   }
}


Slide 46