.. _ref-mad: ############################################################################### Das MAD-Dokument ############################################################################### Maongo-Präsentationen (Presentations) werden in der Beschreibungssprache Maongo Application Description (MAD) verfasst. MAD ist eine deklarative XML-Sprache, die das Layout, die Hierarchie, die Logik, die Animationen u.a.m. einer Presentation beschreibt. Ein MAD-Dokument trägt die Endung ``.mad``. Innerhalb eins MAD-Dokuments kann Javascript als Scripting Sprache verwendet werden. Siehe dazu :ref:`ref-actions Die meisten Sachverhalte in Maongo lassen sich sowohl in XML und als auch in JavaScript ausdrücken. Die Dokumentation wird daher beide Schreibweisen präsentieren. Namen und Bezeichner sind in Maongo case-sensitiv. Presentation ================================================================================ Die Presentation bildet die Grundfläche, auf der weitere Widgets (s.u.) platziert werden. Die Presentation ist ein Widget mit speziellen Eigenschaften und kann nur als äußerer Container benutzt werden. Eine Presentation ist immer rechteckig. Die Größe der Fläche wird über die ``width``- und ``height``-Attribute definiert. Eine "leere" Presentation kann wie folgt definiert werden:: Die Presentation besitzt die Property ``Title``, mit der der zu verwendende Fenstertitel gesetzt werden kann. Weiterhin besitzt eine Presentation auch alle anderen Eigenschaften eines Widgets, wie beispielsweise ``BackgroundColor`` oder ``Rotation``. Die Presentation ist der einzige Ort, in der die der Anwendung zur Verfügung stehenden Fonts deklariert werden können (s.u. :ref:`ref-font`). Außerdem ist die Presentation der bevorzugte Ort, vererbbare Properties auf einen Standardwert zu setzen: beispielsweise die Farbangaben (``BackgroundColor``, ``ForegroundColor``). Die Presentation kann in allen Widgets mit ``this.Presentation`` (JavaScript) bzw. durch Lookup auf "Presentation" adressiert werden. Widgets ================================================================================ Ein Widget ist der Grundbaustein im Maongo System. Es ist eine graphische Komponente, die eine Reihe von veränderbaren Eigenschaften (Properties) besitzt. Das Widget kann Daten empfangen, verarbeiten und weiterleiten, es ist durch Funktionen (Actions) erweiterbar, es lässt sich animieren und in automatischen Layouts verwenden. Widgets werden auf der Fläche der ```` angeordnet und können ineinander verschachtelt werden. Es entsteht so ein hierarchischer Widget-Baum, der die Maongo-Anwendung ausmacht. Befinden sich mehrere Widgets auf derselben hierarchischen Ebene, so werden sie in der Reihenfolge der Definition gezeichnet. Das zuerst (zuoberst im Quellcode) definierte Widget liegt demnach in der hintersten Zeichenebene. Das Maongo-Framework enthält unterschiedliche Widgets für verschiedene Einsatzzwecke (Text, Button, Charts, ...), die alle Erweiterungen der Klasse ``Widget`` sind. Die Widgets sind organisiert in den Sammlungen :ref:`ref-toolkit`, :ref:`ref-charts` und :ref:`ref-media`. Engines ================================================================================ Bestimmte Funktionen benötigen keine grafische Komponente; sie sind in Maongo als Engines realisiert. Eine Engine wird wie ein Widget im XML definiert, hat aber keine visuelle Repräsentanz. Beispiele für Engines sind die Kommunikations-Engines im :ref:`ref-toolkit` und der ChartController in :ref:`ref-charts`. Includes ================================================================================ Der Maongo-Code muss nicht in einem einzigen Dokument stehen. Der Include-Mechanismus erlaubt es, Anwendungen modular zu organisieren und mehrfach benötigten Code an verschiedenen Stellen einzubinden. Das oberste XML-Element einer Include-Datei ist ````. Eine Include-Datei kann weitere Dateien inkludieren. Eine Include-Datei wird mit mit dem Element ```` inkludiert, das Attribute "source" wird als absolute oder zum inkludierenden Dokument relative URL angegeben. Die folgende Presentation inkludiert zwei MAD-Dateien:: // Quellcode der Datei test_1.mad // Quellcode der Datei test_2.mad Der Include-Mechanismus wird direkt beim Laden der Presentation ausgeführt; der Parser löst die ````-Tags auf und fügt den Inhalt der inkludierten Datei an Stelle des ``include``-Statements ein. .. _ref-templates-in-mad: Templates ================================================================================ Eine andere Möglichkeit, wiederverwendbare Objekte zu definieren, bilden Templates. Ein Template ist ein Widget (u.U. mit Child-Widgets), das zur späteren Verwendung definiert, aber nicht dargestellt wird. Zur Definition wird der ``