Neu vorgestellt, Programmierung

Vorlagen-Manager, die Zweite!

NEU!

Mit der Version 5.8.01 von CONZEPT 16 wurde auch der Vorlagen-Manager, der als Plugin-Anwendung entwickelt wurde, vorgestellt. Das Plugin wurde zwischenzeitlich um einige Verbesserungen erweitert, die in diesem Artikel vorgestellt werden sollen.

Einleitung

Die erste Version des Vorlagen-Managers wurde im Blog-Artikel zum Vorlagen Manager vorgestellt. Für den Betrieb des Plugins ist der Designer ab der kommenden Version 5.8.04 notwendig, sowie die Plugin-Schnittstelle der Version 1.1.

Designer

CONZEPT 16-Plugins nutzen die Plugin-Schnittstelle für die Durchführung bestimmter Aktionen im Designer. Für die Erweiterungen des Vorlagen-Managers wurde der Designer um neue Pluginbefehle ergänzt. (Dies ist auch der Grund, weshalb eine neuere Version des Designers benötigt wird.)

  • Bei der Verwendung der Storage-Pluginbefehle kann es passieren, dass ein Storage-Bereich (durch eine andere Instanz) gesperrt ist. Durch den Designer-Befehl Designer.Storage.LastLockingInfo kann der sperrende Benutzer und der Rechner ermittelt werden.
  • Storage-Objekte können als XML-Dokument exportiert und importiert werden. Hierdurch wird ein Plugin in die Lage versetzt, seine gespeicherten Daten in XML-Form weiterzuverarbeiten oder für andere Zwecke weiterzugeben.
  • Vorschaubilder von ganzen Dialogen oder im Designer selektierten Objekten können mit einer variablen Größe generiert werden.
Neuerungen im Vorlagen-Manager

Benutzeroberfläche

Der Vorschaubereich des Vorlagen-Managers hatte bislang eine feste Größe. Da auch die Größe des Vorschaubildes auf 256 x 256 Pixel beschränkt war, konnten u.U. bestimmte Elemente des angezeigten Dialoges oder der enthaltenen Objekte schlecht erkannt werden. Der neue Vorlagen-Manager erstellt nun Previews in einer Größe von bis zu 1280 x 1024 Pixeln. Zudem lässt sich der Vorschaubereich durch einen Slider in der Größe verändern (Abb.1).

BenutzeroberflächeAbb. 1: Verbesserte Benutzeroberfläche

Da Baumansicht und Vorschaubereich jeweils maximierbar sind, entfiel die Schaltfläche zum Ein- bzw. Ausschalten der Vorschau in der Befehlszeile am unteren Rand des Vorlagen-Managers. Über die rot markierte Schaltfläche kann das Layout der Ansichten zwischen vertikal und horizontal gewechselt werden.
Baumansicht nur-lesend anzeigen

Die Checkbox-Schaltfläche in der Befehlszeile erlaubt die Umschaltung der Baumansicht zw. Bearbeitung und “Nur-lesen”-Anzeige (Abb.2). Dies ist hilfreich, wenn mehrere Instanzen des Vorlagen-Managers laufen und eine andere Instanz z.B. die globalen Vorlagen bearbeiten möchte.

Umschaltung der BaumansichtAbb. 2: Umschaltung der Baumansicht

Drag & Drop

  • Vorlagen und Vorlagenordner können nun per Drag & Drop in andere Vorlagenordner gezogen und damit kopiert oder verschoben werden. Die Vorlage wird kopiert, wenn während des Vorgangs die Strg-Taste gehalten wird.
  • Eine Vorlage kann auch per Drag & Drop zwischen den globalen und den Vorlagen des angemeldeten Benutzers kopiert bzw. verschoben werden. Hierzu wird der Mauszeiger während des Vorgangs auf die entsprechende Schaltfläche gezogen. Daraufhin wechselt die Anzeige auf das anvisierte Verzeichnis um und die Drag & Drop-Operation kann dort fortgesetzt werden.
  • Der Export von Vorlagen und Vorlagenordnern ist möglich, indem das gewünschte Objekt auf ein Verzeichnis im Windows-Explorer oder den Desktop gezogen wird. Das so exportierte Objekt kann zum Import per Drag & Drop auch wieder in den Vorlagen-Manager gezogen werden (Abb.3). Auch der direkte Weg zwischen mehreren Instanzen des Vorlagen-Managers ist möglich.
Import und Export per Drag & DropAbb. 3: Import und Export per Drag & Drop
Wenn Sie…

den Vorlagen-Manager selber einsetzen möchten, freuen wir uns auf Ihre Nachricht (gerne auch über den Blog, das soll ja auch möglich sein ;)). Wir stellen Ihnen gerne eine Vorabversion zur Verfügung.

6 Kommentare

6 Kommentare “Vorlagen-Manager, die Zweite!”

  1. @Kilian:
    Bei den Storage-Bereichen handelt es sich um Storage-Objekte unterhalb eines Storage-Verzeichnisses. Aktuell können jedoch nur Bilder / Kacheln prozedural in die Storage per Prozedurbefehl übertragen werden. Storage-Bereiche sind nicht zugreifbar, da diese explizit für die Plugin-Schnittstelle entwickelt wurden.

  2. @Michael
    Aha, das klingt so, als ob die Storage-Bereiche so ähnlich sind wie die binären Objekte/Verzeichnisse. Mich würde interessieren, ob man mit den normalen Prozedurbefehlen innerhalb des Designers an die Daten herankommt, die die Plugins in der Datenbank abgelegt haben. Wenn es sich einfach um bin. Objekte handelt, dann wäre das ja kein Problem.

  3. @Kilian:
    Danke für die positiven Anmerkungen 🙂

    Die Storage-Bereiche stellen eine Verzeichnisstrukur dar, die aus Unterverzeichnissen und Objekten bestehen kann. Der Vorlagen-Manager nutzt je einen Storage-Bereich für die Vorlagen und Vorlagenordner des angemeldeten Benutzers sowie für die globalen Vorlagen. Storage-Bereiche werden in der (mit dem Plugin verbundenen) Datenbank gespeichert.

    So wird der Designer beispielsweise mit dem Plugin-Befehl "Designer.Storage.Create" angewiesen einen neuen Storage-Bereich anzulegen. Mit "Designer.Storage.NewObject" können im Storage-Bereich Objekte angelegt werden. Diese können wiederum über "Designer.Storage.WriteKey" mit Daten beschrieben werden, die zu einem späteren Zeitpunkt wieder gelesen werden können.

  4. @Michael
    Danke für die Info.

    Aha, so ein Storage-Bereich ist also eine vollkommen neue Sache und hat nichts mit den Storage-Objekten (StoOpen usw.) in C16 zu tun?

    Das klingt nach einer sehr guten Erweiterung des Plugin-Systems, finde ich. Wo werden diese Daten denn gespeichert, in den binären Objekten?

    Ich finde es sehr gut, dass Sie das Plugin-System konsequent und kontinuierlich weiterentwickeln und freue mich, wenn Sie unsere Vorschläge im Blog in Ihre Überlegungen einbeziehen.

    Auch dass Sie planen, den prozedurale XML-Im-/ und Export von Dialogen, Menüs usw. zu implementieren, finde ich grossartig. Solche Möglichkeiten werden sich m. E. ebenfalls als grosse Erleichterung in der täglichen Entwicklerarbeit erweisen.

  5. @Kilian:
    Nein, mit Storage-Objekten sind hier die Objekte eines Storage-Bereiches gemeint, der über die Plugin-Schnittstelle geöffnet wird und zum Ablegen beliebiger persistenter Daten für die Plugin-Anwendung dient.

    Ein Import von Dialogen, Menüs, etc. ausgehend von einem XML-Dokument ist aber geplant (auch als CONZEPT 16-Befehl).

    Den Vorschlag, die Prozeduren vom Plugin aus zugreifbar zu machen finde ich sehr gut, wir werden dies bei der Weiterentwicklung der Plugin-Schnittstelle berücksichtigen.

  6. Beinhaltet die Aussage "Storage-Objekte können als XML-Dokument exportiert und importiert werden" auch Dialoge und Menüs usw.? Dies wäre ja eine grossartige Sache ganz unabhängig vom Vorlagenmanager.

    Die Weiterentwicklung des Pluginssystems wie am Beispiel des Vorlagenmanagers demonstriert ist natürlich auch gut. Allerdings ist das Pluginsystem derzeit m. E. noch zu sehr auf die Oberflächenbefehle des Designers bezogen, für jeden Menüpunkt gibt es ein Pluginkommando usw.

    Dies hat natürlich seine Berechtigung aber was m. E. vor allem fehlt sind Möglichkeiten, den Designer mit Hilfe des Pluginsystems auf eine Weise zu erweitern, die man über die Designeroberfläche nicht hat, etwa beim Kompilationsvorgang: Wenn der Designer den Beginn eines Kompilationsvorgangs zusammen mit dem Quelltext an ein Plugin melden würde und auf die Rückgabe des Plugins warten würde, wäre es möglich, die Prüfung ob bestimmte Firmenstandards beim Codieren eingehalten werden, automatisches Refactoring des Codes nach gewissen Vorgaben oder das Ablaufen automatischer Testfälle usw. in den Vorgang einzubauen, ohne den Conzept16-Compiler ändern zu müssen. Durch den klugen Einsatz solcher Möglichkeiten hätten C16-Entwicklerteams es leichter, gemeinsame Standards für ihre Entwicklungsumgebung zu definieren und durchzusetzen.

    Selbst wenn man nicht in die Ereignisabläufe des Compilers eingreifen kann, würde die Möglichkeit, den Quelltext beliebiger Prozeduren zwischen Designer und Plugin hin- und hersenden zu können, das Pluginsystem auf einen Schlag zu einem sehr interessanten Werkzeug machen.

Kommentar abgeben