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

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:

Release der Gegenmaßnahmen gegen Trojan Source und Trojan SQL

04.02.2022

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.

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


Vor 5 Jahren hier im Blog

  • IOTA oder wie eine Blase funktioniert

    17.06.2017

    Ich wurde gefragt, ob ich Einschätzungen zu Crypto-Currencies machen könnte. Speziell wurde ich nach Ethereum gefragt - einer, von der ich bereits gehört und für die ich mich bereits kurzzeitig milde interessiert hatte - und IOTA, die mir völlig unbekannt war. Ich begann mit einer Analyse der mir unbekannten und wurde überrascht.

    Weiterlesen...

Neueste Artikel

  • LinkCollections 2022 V

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

    Weiterlesen...
  • Minifying elbosso.github.io

    Ich habe mir ein paar Gedanken über den Ressourcenverbrauch meiner Heimatseite im Zischennetz gemacht, um sie ien ganz klein wenig "grüner" zu gestalten...

    Weiterlesen...
  • tesseractuzneditor

    Ich habe hier bereits verschiedentlich davon berichtet, wie ich versucht habe, mich dem Thema Optical Character Regognition (OCR) zu nähern. Nach einigen interessanten Diskussionen in den vergangenen Monaten habe ich jetzt ein damit in Verbindung stehendes Projekt auf Gitlab aufgesetzt

    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.