Beispiele
Viele Programme arbeiten mit zweidimensionalen Zeichnungen, wie z.B. Diagramme oder Entwürfe. In manchen Fällen sind die Zeichnungselemente einer Zeichnung unabhängig voneinander, häufig bestehen jedoch funktionale Abhängigkeiten zwischen ihnen. In Abbildung 1 ist beispielsweise ein Editor für Netzpläne (PERTChart) dargestellt.

Abbildung 1:
PERTChart-Editor
Die Zeichnung enthält Vorgänge welche durch Rechtecke dargestellt werden und Pfeile, die die Abhängigkeiten zwischen den Vorgängen repräsentieren. Die Vorgänge besitzen einen Titel, eine Dauer, einen Endezeitpunkt und einen Startzeitpunkt, wobei der Startzeitpunkt nicht explizit dargestellt wird. Der Startzeitpunkt eines Vorgangs berechnet sich aus dem Maximum der Endzeitpunkte seiner unmittelbaren Vorgänger, d.h. der Vorgänge, die eine Verbindung zu ihm besitzen. Wird die Dauer eines Vorgangs geändert, so ändert sich automatisch auch sein Endezeitpunkt. Dies beeinflußt wiederum die Startzeitpunkte anderer Vorgänge, welche entsprechened ihre Endezeitpunkte daraufhin korrigieren.
Der Benutzer des Editors kann interaktiv den Netzplan erstellen. Er benutzt die Maus, um einzelne Vorgänge auszuwählen und anschließend mit ihm zu arbeiten. Wird beispielsweise ein Vorgang selektiert, so wird eine Menge sogenannter Handles (siehe Vorgang Specify in Abbildung 1) dargestellt. Wird nun mit der Maus an einem Handle an den Ecken des Vorgangs gezogen, so wird das Rechteck vergößert. Wird der Handle an der rechten Seite selektiert so wird ein Pfeil erzeugt der auf einen anderen Vorgang gezogen werden kann. Auf diese Weise können Vorgänger/Nachfolger-Beziehungen erstellt werden. Wird ein Vorgang verschoben so werden alle mit ihm verbundenen Pfeile mitgezogen.
Es gibt viele Möglichkeiten, die Attribute eines Vorgangs zu beeinflussen. Ein Vorgang kann beispielsweise ein PopUp-Menü besitzen, über das die Dauer des Vorgangs ausgewählt werden kann. Das Menü kann einen Menüeintrag Change Duration besitzen, welcher ein Eingabefenster für die Dauer des Vorgangs öffnet. Eine weitere Möglichkeiten bieten Werkzeuge. Mit dem TextTool kann beispielsweise der Titel oder die Dauer des Vorgangs mit der Maus selektiert und anschließend editiert werden. Im Beispiel des PERTChart-Editors ist das TextTool wohl die beste Möglichkeit, den Titel, die Dauer oder den Endezeitpunk eines Vorgangs zu ändern, Handles werden am besten zum Ändern der Größe des Begrenzungsrechtecks eines Vorgangs benutzt und Menüs für Copy- und Paste-Funktionen verwendet. Der Programmierer des Editors muß auswählen, welche Methode für seine Zwecke am sinnvollsten ist.
Die Palette auf der linken Seite des Editors in Abbildung 1 stellt drei Werkzeuge zur Verfügung: ein Selektionswerkzeug (welches gerade ausgewählt ist), ein Textwerkzeug und ein Werkzeug zum Erstellen neuer Vorgänge. Ein Werkzeug wird mit der Maus selektiert und dadurch aktiv.
Mit HotDraw erstellte Editoren können auch Teil einer größeren Anwendung sein. Abbildung 2 zeigt den NetworkEditor.

Abbildung 2: NetworkEditor
Das obere Feld des Editors beinhaltet die HotDraw-Zeichnung eines Netzwerks. Die Felder unten links und in der Mitte (SelectionInList aus der Smalltalk-Klassenbibliothek) dienen zur Selektion zweier Knoten des Netzwerks. Im Feld unten rechts wird das Gewicht der Kante zwischen den Knoten angezeigt und die Manipulation dieses Werts ermöglicht. Aufgrund der Angaben in den unteren drei Feldern wird das Netzwerk im oberen Feld gezeichnet. Die Knoten richten sich dabei entsprechend den Gewichten zwischen ihnen aus. Erstellt und gelöscht werden die Knoten über die beiden Listen. Der Benutzer kann die Knoten lediglich mit der Maus verschieben. Der Editor zeigt schön die Animationsmöglichkeiten von HotDraw.

Abbildung 3:
DrawingEditor, der Standard-Editor von HotDraw
In Abbildung 3 ist der Standard-Editor von HotDraw dargestellt. Das erste Werkzeug der Palette ist das Selektionswerkzeug, das zweite und dritte Werkzeug ermöglchen, ein Zeichnungselement in den Vordergrund bzw- Hintergrund zu holen, das vierte Werkzeug dient dem Löschen von Zeichnungselementen. Mit Hilfe des letzten Werkzeug können zwei Zeichnungselemente durch funktionale Abhängigkeiten (Constraints) verknüpft werden. Alle anderen Werkzeuge in der Palette dienen der Erzeugung verschiedener Zeichnungslemente.

Abbildung 4: DrawingInspector
Eine weitere interessante Anwendung ist DrawingInspector (Abbildung 4). Dieser Editor visualisiert beliebige Objekte aus der Smalltalk-Umgebung und ihre Verbindungen. Jedes Rechteck repräsentiert ein Objekt. Wird ein Objekt selektiert so wird für jede Instanzvariable, die nicht NIL ist ein Handle angezeigt. Durch Klicken auf dieses Handle wird eine neues Zeichnungselement erzeugt, das den Wert der Instanzvariable darstellt.
Die beste Möglichkeit, HotDraw kennenzulernen ist, die verschiedenen Editoren auzuprobieren um das Verhalten der verschiedenen Mechanismen kennenzulernen.
Dokumentation
Diese Dokumentation besteht im wesentlichen aus vier Teilen:
- Diese Beschreibung des Frameworks.
- Ein Anwendungsmustersystem in Form eines komfortablen Cookbook. Dieser Teil beschreibt die Anwendung des Frameworks zur Erstellung eigener Anwendungen.
- Zwei Tutorien zeigen die Erstellung der Beispielapplikationen PERTChart und HotPaint in mehreren Schritten.
- Eine Design-Beschreibung erläutert das Design des Frameworks.
Der geeignetste Einstiegspunkt in die Dokumentation ist das Anwendungsmustersystem. Es beschreibt, wie das Framework HotDraw zur Programmierung eines eigenen Editors eingesetzt wird. Die recht abstrakte Beschreibung der Anwendungsmuster kann durch Referenzieren der Beispiele aus den Tutorien konkretisiert werden. Hierzu stehen entsprechende Hypertextverweise zur Verfügung.
Die Tutorien zeigen Schritt für Schritt, wie mit Hilfe der Anwendungsmuster eine Beispielapplikation erstellt wurde. Das erste Tutorium beschäftigt sich mit dem PERTChart-Editor, der in dieser Beschreibung bereits vorgestellt wurde. Das zweite Tutorium behandelt das Malprogramm HotPaint. Ausgehend von den Anwendungsmustern bestehen zusätzlich Verweise in die Design-Dokumentation. Der interessierte Leser kann so die Hintergrundinformationen zu den einzelnen Anwendungsmustern erhalten. Die Design-Dokumentation kann von Lesern, die die Anwendung des Frameworks bereit kennen auch isoliert gelesen werden.
Alle erklärungsbedürftigen Begriffe sind durch kursive Hyperlinks markiert. Wird ein solcher Link aktiviert, so wird ein Fenster mit einem Glossareintrag zu diesem Begriff geöffnet.
Zur konkreten Suche nach bestimmten Themen steht eine Suchmaschine zur Verfügung.