Apple WebObjects 3.5 User Manual

Page 147

Advertising
background image

When You Don’t Have an Applet’s Source Code

147

1. Declare a subclass of the Association class.

class MyAssociation extends Association {

...

}

2. Implement the

keys

method to return a list (Vector) of keys managed by

the applet. See “When You Have an Applet’s Source Code” (page 144)
for an example.

3. 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).

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

4. The Association responds to the triggering of the applet’s action by

sending

invokeAction

to itself.

// fictictious method
public void observeGadget(Object sender, String action) {

if ((sender instanceof Gadget) && action.equals("vacuum")) {

this.invokeAction(action);

}

}

Note that in this hypothetical example, the Association must first set itself
up as an observer.

Advertising