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

  • Aviator + Websockets

    15.06.2019

    Nachdem ich in den letzten Wochen und Monaten meine Zeit und Energie in die sQLshell gesteckt habe - was sowohl Bugfixing als auch neue Features betraf - habe ich nun endlich die Zeit gefunden, ein bereits lange überfälliges Feature an dWb+ und speziell am aviator zu implementieren.

    Weiterlesen...

Neueste Artikel

  • Neue Version plantumlinterfaceproxy napkin look

    Es gibt eine neue Version des Projektes plantumlinterfaceproxy - Codename napkin look.

    Weiterlesen...
  • Apache HTTPCore5 funktioniert nicht mit Docker

    Ich habe neulich drei Stunden meines Lebens verschwendet weil ich unbedingt die neueste Version der HTTPCore5 Library von Apache einsetzen wollte.

    Weiterlesen...
  • Entwurfsmodus für beliebige SVG Graphiken

    Nachdem ich in der Vergangenheit immer wieder Weiterentwicklungen der Idee vorgestellt habe, Graphiken mit dem Computer so zu ezeugen dass sie eine gewisse "handgemachte" Anmutung haben, habe ich nunmehr die durchschlagende Idee gehabt:

    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.