Ich habe bereits verschiedentlich auf eine Komponente verwiesen, die ich aus einer frühen Version des Editors JEdit erstellt habe - zuletzt als ich über den Fork zur Verbesserung der BeanShell wegen der Trojan Source Vulnerability berichtete.
Es wird Zeit, ein weniger ausführlich über eine Komponente zu berichten, die ich bereits seit vielen Jahren in verschiedenen Projekten einsetze. Die Editorkomponente aus JEdit - oder genauer: die Komponente zum Editieren von Text ist eine Alternative zu JEditorPane bzw. JTextPane, bietet aber bereits im Urzustand viele Verbesserungen und über die beiden hinausgehende Features.
Ich fand die Architektur mit Syntax-Dokumenten und zugehörigen Token-Markern intuitiv und leicht verständlich, sodass ich tatsächlich auch Unterstützung für andere Sprachen erstellte. Ich erweiterte die Komponente darüber hinaus auch um Features, die ich aus anderen Editoren und IDEs kannte - dazu gehören die Sidebars mit Zeilennummern bzw. die zum Hervorheben und direkten Anspringen von Fundorten gesuchter Begriffe oder Fehler. Das kompletteste Beispiel der Nutzung all dieser Features ist sicherlich die Editoren in der sQLshell:
AugmentedJEditTextArea in der sQLshell
In ihm sind auch weitere Zusatzfunktionalitäten, die ich um den Editor herum gebaut habe zu finden - sei es die Makrofunktionalität, der Dialog zum Suchen und ersetzen oder die Templatefähigkeit.
Außerdem habe ich eine Komponente darum herumgestrickt, die als EditorPane benutzt werden kann und eine lokalisierte (deutsch/englisch) Toolbar für die am meisten benötigten Aktionen bereits mitbringt. Diese kann natürlich um eigene Aktionen erweitert werden. Die Icons, die für die Actions zur Verfügung gestellt werden sind komplett anpassbar - in OpenSource-Projekten verwende ich gerne Material Icons:
AugmentedJEditTextArea mit Material Icons
Die Icons können natürlich für andere Anwendungen ersetzt werden - dazu muss lediglich ein entsprechendes Mapping zur Verfügung gestellt werden.
Andere Projekte erforderten weiter reichendere Anpassungen - so ist es zum Beispiel möglich, Dokumente zu spezifizieren, die nicht editierbare und editierbare Bereiche mischen. Auch diese - zugegebenerweise eher esoterische Anforderung ist durch die Features des AugmentedJEditTextArea abgedeckt. Auch weitere, wie die in der sQLshell benötigte Funktionalität zur Selektion des aktuellen Statements konnten schnell und effizient auf den bestehenden Grundlagen implementiert werden.
Die Erweiterung zum Scannen von Text bevor er in die Komponente integriert wird, habe ich bereits vorgestellt: Hier wird nach versteckten Control-Characters gesucht und - falls welche gefunden werden - der Anwender durch einen entsprechenden Dialog darauf hingewiesen.
Dieser Scan findet immer dann statt, wenn größere Textmengen in die Komponente eingefügt werden sollen: Beim Laden aus einer Datei, beim Anhängen des Inhalts einer Datei an den bereits enthaltenen Text, beim Einfügen aus der Zwischenablage und - bei Betriebssystemen, die das unterstützen - aus der Primary Selection mittels der mittleren Maustaste.
Letztens bin ich auch noch über eine interessant klingende Alternative gestolpert, für deren genauere Analyse mir allerdings bisher die Zeit fehlte...
19.12.2023
Mit Version 1.4.0 wurden die Gegenmaßnahmen gegen Trojan Source und Trojan SQL endlich in einer Release auf Repsy zur Verfügung gestellt.
06.03.2022
Ich schrieb hier bereits über meine eigene Variation einer Textkomponente mit Syntaxhighlighting für Java. Durch Trojan Source und meine Fortschritte im Projekt The ultimate RISC bin ich dort nochmal eingestiegen und habe einige Features hinzugefügt:
Multi-User-WebDAV, Docker, GitHub
17.11.2019
Nachdem ich mich in letzter Zeit verstärkt mit Docker und dem zugehörigen Ökosystem beschäftige, habe ich begonnen, verschiedenste Dienste in Containern zu testen um zu sehen, ob in manchen Fällen LXC oder KVM nicht doch die bessere Wahl wäre...
Weiterlesen...Android Basteln C und C++ Chaos Datenbanken Docker dWb+ ESP Wifi Garten Geo Go GUI Gui Hardware Java Jupyter Komponenten Links Linux Markdown Markup Music Numerik OpenSource PKI-X.509-CA Python QBrowser Rants Raspi Revisited Security Software-Test sQLshell TeleGrafana Verschiedenes Video Virtualisierung Windows Upcoming...
In eigener Sache...
Weiterlesen...Ich habe eine neue Java Swing Komponente erstellt: Es handelt sich um einen Wrapper für von JToolBar abgeleitete Klassen, die die Werkzeugleiste minimieren und sie nur dann einblenden, wenn der Mauszeiger über ihnen schwebt.
Weiterlesen...Ich habe bereits in einem früheren Artikel über meine ersten Erfolge berichtet, der sQLshell auf Basis des bestehenden Codes aus dem Projekt EBMap4D eine bessere Integration für Geo-Daten zu spendieren und entsprechende Abfragen, bzw. deren Ergebnisse auf einer Kartenansicht zu visualisieren.
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, muss 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 Codeberg-Repositories findet man hier.