# MathCoach IDE API `Version 3.0.0` In diesem Paket ([Das Gitblit Repository findet sich hier](https://bayes.htwsaar.de/gitblit/summary/mathcoach!mathcoach-ide-api.git)) ist die öffentliche Schnittstelle zur MathCoach Entwicklungsumgebung (IDE) definiert. Mithilfe dieser Schnittstelle können externe Werkzeuge (z.B. Editoren) erstellt werden. Ziel ist, dass diese Werkzeuge für den Anwender komfortable - in die IDE integriert -zur Verfügung gestellt werden können. Darüber hinaus werden als Ergänzung einige Hilfsfunktionen zum Bau von Werkzeugen angeboten. ![Demo](media/usage_author.gif) *Beispielhafte Anwendung: Eine Datei (`file.demo.json` - auch "Kontext-Datei" genannt) wird angelegt. Diese kann direkt durch das Werkzeug (Demo-Editor) geladen werden. Das Werkzeug kann die Kontext-Datei beschreiben (um zu demonstrieren, dass es ein internes Datenmodell persistent speichern kann). Weiterhin kann das Werkzeug eine Groovy-Aufgabe generieren und die Aufgaben-Vorschau anzeigen lassen.* ## Idee Grundlegende Idee ist, dass ein externes Werkzeug nahtlos in die MathCoach IDE integriert werden kann. Bestimmte Dateien werden anhand ihrer Dateiendung mit dem Werkzeug verknüpft, sodass der Benutzer das passende Werkzeug durch einen einfache Klick im Datei-Explorer starten kann. Diese Datei wird im folgenden *Kontext-Datei* genannt und soll dazu dienen, das interene Datenmodell (also alle Informationen, die der Benutzer im Werkzeug angibt) zu speichern. Das Werkzeug soll das gespeicherte Datenmodell zu einem späteren Zeitpunkt wieder laden können. Ein Werkzeug kann beispielsweise MathCoach-Aufgaben (Groovy-Datei) generieren. Weitere Funktionalitäten der IDE - beispielsweise das Starten der generierten Aufgabe in der Aufgaben-Vorschau der IDE - sind ebenfalls für den Werkzeugentwickler verfügbar. Das Realisieren von Werkzeugen auf diese Art und Weise hat zahlreiche Vorteile: - Werkzeuge werden einheitliche und benutzerfreundlich zur Verfügung gestellt - Grundlegende Funktionalitäten (Anlegen von Dateien, Navigieren im Dateisystem) werden bereits durch die IDE bereitgestellt. So können Werkzeug-Entwickler ihren Fokus auf das Werkzeug legen. - Die IDE kann gefährliche Situationen (z.B. das Überschreiben von Dateien) abfangen und den Benutzer entscheiden lassen, wie fortgefahren werden soll. ## Entwicklung externer Werkzeuge Externe Werkzeuge laufen ausschließlich im Webbrowser des Benutzers - es muss also auf `HTML`, `JavaScript` und `CSS` gesetzt werden. Außerdem muss das Werkzeug unter der Domain des jeweiligen MathCoach-Servers erreichbar sein. Zur Entwicklungszeit legt man das Werkzeug dazu im www-Verzeichnis ab. Die von der IDE bereitgestellte `ide-lib.js` Bibliothek muss eingebunden werden.