Ich trug mich schon länger mit dem Gedanken, ein Werkzeug zu schaffen, das den diversen Entwickler-Tools in Browsern gleichen sollte: Es sollte die Selektion von GUI-Komponenten mittels Maus ermöglichen und die Ergebnisse der Manipulation ausgewählter Komponenten sollte live - während die eigentliche Applikation normal arbeitet - möglich sein.

Die erste Version eines solchen Werkzeugs ist fertiggestellt. Zur Zeit wird sie noch benutzt, um grundlegende Konzepte zu testen und Interaktionsmetaphern zu erarbeiten. Allerdings ist sie bereits in dem oben umrissenen Rahmen funktionsfähig und einsetzbar.

Sie wurde als premain-Jar konzipiert, das geladen und gestartet wird, bevor die Abarbeitung in die eigentliche main-Methode der Anwendung eintritt.

Das Werkzeug öffnet ein Fenster, in dem momentan nur eine Action zur Verfügung steht. Führt man diese durch Druck des zugehörigen Buttons aus, wird der Inspektionsmodus aktiv und diejenige Komponente der Anwendung, über der der Mauszeiger schwebt wird mit einer auffälligen Border hervorgehoben. Sobald in diesem Modus mit der Maus auf die hervorgehobene Komponente geklickt wird, wird diese analysiert und ein Formular generiert, mit dem man alle Aspekte der Komponente interaktiv und live manipulieren kann.

Ich musste dazu das Framework ein wenig erweitern: Es verfügt bereits über eine Automatik, die eine unendliche Rekursion bei Kreisschlüssen im Objektgraphen verhindert. Speziell Swing-Objekte (genauso wie Groovy - aber das ist eine andere Geschichte...) verfügen über einen extrem verzweigten Objektgraphen, der schnell so viele Instanzen umfasst, dass die vollständige Analyse und vor allem die Erzeugung eines umfassenden Formulars zur Manipulation der Objekte performant nicht mehr zu erledigen ist. Ich habe daher eine Möglichkeit in das Framework eingebaut, eine maximale Analysetiefe vorzugeben und sie für den Prototypen auf den Wert 2 begrenzt.

Das hier verlinkte Video gibt einen kleinen Einblick in das Handling und die sich eröffnenden Möglichkeiten:

Demnächst werde ich versuchen, dieses Werkzeug auch auf JavaFX-Applikationen anzuwenden und sehen, ob es dort ebenfalls nützlich werden kann.

Aktualisierung vom 1. Juni 2019

Der Code wurde inzwischen in einem GitHub-Repository veröffentlicht.

Alle Artikel rss Wochenübersicht Monatsübersicht Github Repositories Gitlab Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Certstream, InfluxDB, Grafana und Netflix

    16.04.2019

    Nachdem ich vor kurzem über mein erstes Spielen mit dem certstream berichtete, habe ich weitere Experimente gemacht und die Daten zur besseren Auswertung in eine InfluxDB gepackt, um sie mit Grafana untersuchen zu können.

    Weiterlesen...

Neueste Artikel

  • Die sQLshell ist nun cloudnative!

    Die sQLshell hat eine weitere Integration erfahren - obwohl ich eigentlich selber nicht viel dazu tun musste: Es existiert ein Projekt/Produkt namens steampipe, dessen Slogan ist select * from cloud; - Im Prinzip eine Wrapperschicht um diverse (laut Eigenwerbung mehr als 140) (cloud) data sources.

    Weiterlesen...
  • LinkCollections 2024 III

    Nach der letzten losen Zusammenstellung (für mich) interessanter Links aus den Tiefen des Internet von 2024 folgt hier gleich die nächste:

    Weiterlesen...
  • Funktionen mit mehreren Rückgabewerten in Java

    Da ich seit nunmehr einem Jahr bei meinem neeun Arbeitgeber beschäftigt und damit seit ungefähr derselben Zeit für Geld mit Python arbeite, haben sich gewisse Antipathien gegenüber Python vertieft (ich kann mit typlosen Sprachen einfach nicht umgehen) - aber auch einige meiner Gründe, Python zu lieben sind ebenso stärker geworden. Einer davon ist der Fakt, dass eine Methode in Python mehr als einen Wert zurückgeben kann.

    Weiterlesen...

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muß damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.