AugmentedJEditTextArea

vorhergehende Artikel in: Java Komponenten Markup
29.01.2022

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:

Screenshot 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:

Screenshot 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...

Artikel, die hierher verlinken

Release der Gegenmaßnahmen gegen Trojan Source und Trojan SQL

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.

Neue Features für AugmentedJEditTextArea

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:

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


Vor 5 Jahren hier im Blog

  • Fährnisse des Buildprozesses unter Windows

    17.07.2019

    Nachdem ich begonnen hatte, mich mit der Beschleunigung der Berechnung des Mandelbrot-Fraktals unter Zuhilfenahme der Shadereinheiten in Graphikkarten zu beschäftigen und erste Erfolge feiern konnte, wollte ich das mal auf einer richtigen Graphikkarte ausprobieren...

    Weiterlesen...

Neueste Artikel

  • Datenvalidierung UTF8 mit BiDi-Steuerzeichen (TrojanSource 2.0)

    Ich bin heute nochmal inspiriert worden, weiter über die Trojan Source Vulnerability nachzudenken. Meiner Meinung nach bestehen hier noch Probleme - speziell bei Nutzereingaben oder Daten, die über externe Schnittstellen ampfangen werden.

    Weiterlesen...
  • OpenStreetMap Navi als Docker-Container

    Ich habe die auf OpenStreetMap basierende OpenSource Navigationslösung Graphhopper in einen Docker-Container gepackt und als neuestes Mitglied in meinem Docker-Zoo willkommen geheißen.

    Weiterlesen...
  • SQL-Aggregatfunktionen in SQLite als BeanShell-Scripts

    Ich habe neulich über eine Möglichkeit berichtet, SQLite mittels der sQLshell und Beanshell-Skripten um SQL-Funktionen zu erweitern. In diesem Artikel versprach ich auch, über eine solche Möglichkeit für Aggregatfunktionen zu berichten.

    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.