When You Don't Have an Applet's Source Code
If you have an applet but do not have the source code for it, you must follow these steps to create an Association class for it:
- Declare a subclass of the Association class.
- Implement the keys method to return a list (Vector) of keys managed by the applet. See "When You Have an Applet's Source Code" for an example.
- Implement the takeValueForKey and valueForKey methods to set and get the values of keys. Use Association's destination method to obtain the destination object (that is, the applet).
- The Association responds to the triggering of the applet's action by sending invokeAction to itself.
class MyAssociation extends Association { ... }
synchronized public Object valueForKey(String key) { Object dest = this.destination(); if (key.equals("title")) { return ((MyApplet)dest).getLabel(); } } synchronized public void takeValueForKey(Object value, String key) { Object dest = this.destination(); if (key.equals("title")) { if ((value != null) && !(value instanceof String)) { System.out.println("Object value of wrong type set for key 'title'. Value must be a String."); } else { ((MyApplet)dest).setLabel(((value == null) ? "" : (String)value)); } }
Note that the class of the destination applet (in this example, MyApplet) must be cast.
If the applet triggers an action method, it must have some mechanism for communicating this event to observers (such as an observeGadget method).
// fictictious method
public void observeGadget(Object sender, String action) {
if ((sender instanceof Gadget) && action.equals("vacuum")) {
this.invokeAction(action);
}
}