Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Sascha hat ja bei seinem "Projekt-W" einen GUI-Editor gebaut. Dies hat mich inspiriert, und ich wollte auch einen Editor basteln - vorallem da bei mir jetzt auch massiv Menüs erstellt werden müssen. Ich habe mir also versucht herzuleiten wie man sowas machen könnte. Bevor ich damit anfange wollte ich aber nochmal nachfragen obs auch wirklich so geht. Nicht das ich irgendwelche "best praktices" bzw. patterns ignoriere und ins "Verderben";) renne.
Ich benutze Java. Alle meine GUI Komponenten werden später, aller Vorraussicht nach, in einem JAR File zur Verfügung stehen.
1. Idee: Komponenten-Beschreibungs-XML-Files Per Refraction-API werden alle "setter" Methoden der Kompos ausgelesen und in einem XML-File hinterlegt. Der Nutzer kann weitere Aufrufe manuell hinzufügen.
Diese Beschreibungsfiles werden benutzt um die Eigenschaften der Compos im späteren GUI-Editor zu manipulieren. Durch die Manuelle Methode können auch Funktionen zugänglich gemacht werden die keine Setter-Methoden im Eigentlichen Sinne sind.
Die Erstellung der Komponenten-Beschreibungen ist eine erste Stufe des GUI-Editors und speichert die Ergebnisse in einem Verzeichnis des Editors ab, so dass die GUI-Stufe diese Infos auslesen kann.
2. Idee: Menü-Beschreibungs-XML-Files Der User kann nun mithilfe der bei 1) genannten Files Komponenten erzeugen und diese in die Menü-Hierarchie einordnen und die Eigenschaften der Kompos verändern. Das Fertige ergebnis kann wiederum in ein XML-File exportiert werden, welches 2 geteilt ist. Der erste Teil enthält Infos über die Eigenschaftsbelegung der verwendeten Komponenten. Der Zweite Teil enthält die Hierrachie/Architektur des Menüs damit man die Menüs wieder entsprechend zusammen setzen kann.
3. Idee: Der Editor Der Editor lädt, falls eine bestimmte Klasse benötigt wird, die Beschreibung der Klasse und baut daraus eine Art "Property-Editor".
Allgemeine Fragen: Ist die herangehensweise richtig?
Gehts einfacher?
Brauch ich die Comp-Beschreibung wirklich?
Frage an die die sowas schonmal gemacht haben: Wie habt ihr es bei euch gemacht?
Was macht man mit Kompo-Eigenschaften denen man mehrere Werte übergeben muss wie z.B. die Eckpunkte einer Freeform-Komponente?
Frage an Sascha: Kannst du bei dir die Komponenten alle mit der Maus Platzieren?
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Öhm...da du die Reflection API nutzen willst, würde ich einen leicht anderen Ansatz wählen.
Zunächst würde ich Idee 3 als Basis nutzen, da sie ideal für die Reflection API ist. Denn mittels Reflection kannst du alle Funktionen, Variablen etc auslesen.
Danach entsprechend die Komponenten über den WYSIWYG Editor zusammensetzbar machen und die Properties entweder als XML Datei oder in serialisierter Form speichern.
Jenachdem wie dein GUI aufgebaut ist und wieviel AUfwand du dir machen willst, kannst du die eigentliche Werte für das GUI aus den XML DAteien lesen oder direkt die Komponenten im Editor sowie im jeweiligen OGL Programm nutzen.
Was ich damit meine? Nun, du könntest jedes deiner GUI ELemente in einer eigenen Komponenten kapseln/wrappen. Dann wird die Komponente nur im Editor genutzt und aus den zugewiesenen Werten kann dann später das GUI Element erzeugt werden.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Öhm... ja das war auch mein ansatz. Nur glaube ich, dass die Reflection-API hinreichend komliziert in den Property Editor eingebaut werden kann. Deshalb wollte ich die Reflection-API benutzen um die Komp-Beschreibung anzulegen, aber mit der Option Manuell noch was dran zu ändern.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.