# Usage Notes (Information for Programmers)

> In each applet the author must specify topic and author in method Applet.getAppletInfo(). This information is displayed in the ABOUT APPLET panel of each applet to be invoked with the menu
> Help -> About Applet.

### Diverse Comments

> Comment from JBuilder: Use frame.pack() for frames die Infos über die bevorzugte Größe besitzen, z.B. aus ihrem Layout. Use frame.validate() for frames, die eine voreingestellte Größe besitzen.

### Update Mechanism (20.7.99, kp)

> Problem: Die update(Object) Methode von Objekten sollte nur von wenigen, ausgewaehlten Stellen heraus aufgerufen werden. Insbesondere sollte sie NICHT in Methoden aufgerufen werden, die Berechnungen ausfuehren, also nicht in compute-Methoden.
> Begruendung: Wenn eine compute-Methode selber ein update() aufruft, kann man sie nicht in eine Folge von Befehlen einbauen, an deren Ende das Objekt dann genau einmal upgedated wuerde. Wenn man eine Folge compute1(); compute2(); ... etc haette, dann wuerde jede einzelne compute() Methode ein update() initiieren.
> Loesung: Update() im wesentlichen (es gibt Ausnahmen) in der eigentlichen
> public boolean update(Object object)
> aufrufen, oder nach user interaction vom Panel, oder nach anderen Events.

> Allgemeine Strategie:

> 1. Verwende
> geom.update(null),
> um den Parent von geom zu informieren, dass sich geom geaendert. Dieser Call initiiert in PsObject einen Aufruf m_parent.update(geom) und springt deshalb in die update() Methode vom Parent. Ausserdem verwende diesen Befehl, um die Geometrie im Viewer upzudaten. Dieser Call setzt voraus, dass geom und seine Panels alle auf dem neuesten
> Stand sind. Der folgende Call macht nicht diese Voraussetzung:

> 2. Verwende
> geom.update(geom),
> um zuerst die Info/Material/... Panels nach einer Aenderung in geom wieder auf den neuesten Stand zu bringen. Danach wird automatisch geom.update(null) aufgerufen. Der 2. Fall beinhaltet also den ersten Fall. Wenn die Panels nicht sichtbar sind, werden sie auch nicht geupdated (erst wenn sie wieder sichtbar werden. Wenn aber zum Beispiel das InfoPanel sichtbar ist, dann wird es immer geupdated.

> 3. Verwende
> geom.update(other),
> wenn sich object veraendert hat und geom darauf reagieren soll. In der Update Methode von geom MUSS dann abgefragt werden, ob das event==object ist. Nachdem geom dann auf den neuesten Stand gebracht worden ist, kann das update an die Oberklasse von geom weitergereicht werden. Normalerweise mit Argument null oder this, da geom ja auf dem neuesten Stand ist:
> Geom {
> update(Object object) {
> if (object==other) {
> // bringe geom auf den neuesten Stand
> return super.update(null); // oder super.update(this)
> } else if (object== ...

> Ein Verstaendnis dieses Mechnismus ist wichtig, wenn Ihr Code schreibt, auf den andere aufbauen.

##### Back to Top