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

  • AtomicInteger vs. Integer

    24.03.2019

    Ich habe am Wochenende wieder einmal mit Java-Benchmarks experimentiert

    Weiterlesen...

Neueste Artikel

  • Konstruktive Geometrie mit dem Computer

    Ich habe in einem vorhergehenden Artikel beschrieben, dass ich eine weitere neue Graphik-Primitive erstellt habe. Dabei musste ich mir meine verschütteten Trigonometrie-Kenntnisse wieder vor Augen führen - mit Bleistift und Papier. Das müsste doch auch anders gehen dachte ich mir und begann...

    Weiterlesen...
  • GitHub-Projekte

    Mal abgesehen von den anderen Links, die ich in unregelmäßigen Intervallen hier poste kommt heute ein Schwung (aus meiner Sicht) interessanter/skurriler Projekte auf GitHub:

    Weiterlesen...
  • Mehrere Datenbanken und Postgis-Erweiterung in Docker

    Ich hatte ja schon beschrieben, dass ich mich in diesem Jahr wieder intensiver um mein Geoinformationssystem EBMap4D kümmern möchte. Dazu habe ich jetzt einige infrastrukturelle Vorbereitungen getroffen...

    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.