HILFE! Syntax-Highlighting in einem SourceViewer

HuberDe

Mitglied
Hallo zusammen,

ich entwickle momentan ein Tool, welches auch XML-Highlighten können soll. Grundlage ist eine main-Class abgeleitet von JFace-ApplicationWindow. Als Viewer verwende ich den JFace SourceViewer. Bei der Implementation des XML-Syntaxhighlighting habe ich jedoch enorme Probleme. Ich dachte es gäbe dafür eine fertige "Style-Klasse" die ich zum formatieren des Textes verwenden kann.

So ist es soweit ich weiß auch in Qt. Aber was ich bisher Informationen im Internet finden konnte muss ich einen XML-Parser selbst implementieren? Schlussendlich müsste ich dem SourceViewer dann eine Objekt vom Typ SourceViewerConfiguration zuweisen. Sobald ich das mache, funktioniert jedoch mein verwendeter JFace Undomanager nicht mehr. Dieser logged dann völlig falsche Veränderungen am zugehörigen Model.

Ich habe auch schon recht viel probiert, bin jedoch zu keinem Ergebnis gekommen. Ich hoffe dass mir jemand helfen kann.

Nochmal die einzelnen Schritte im Detail:

  • Anlegen eines JFace SourceViewers
  • Anlegen des zugehörigen JFace Dokuments
  • Zuweisen des Documents zum Viewer mit setDocument()
  • Anlegen eines JFace UndoManagers
  • undoManager.connect(jFaceDocument)
  • Anlegen einer SourceViewerConfiguration
  • SourceViewer.configure(sourceViewerConfiguration)

Somit sollte die Geschichte eigentlich zumindest rudimentär funktionieren, wenn ich das richtig verstanden habe. Ich lasse mich jedoch auch gerne eines besseren belehren.

Danke
 
Hi Thomas,

ich denke das sollte weiterhelfen. Danke Dir. Die Seite beschreibt jedoch die Entwicklung eines Plugins für Eclipse? Kann ich das so auf mein "Standalone" Tool anwenden? Und was sagst Du zu dem Problem in Verbindung mit dem UndoManager?
 
Hi,

mitlerweile ist es mir gelungen, dank dem Link von Thomas, ein Highlighting zu implementieren. Ich habe jedoch weiterhin das Problem, dass der UndoManager nicht mehr funktioniert, sobald ich mit "configure(..)" dem SourceViewer die SourceViewerConfiguration für das Highlighting zuweise.

Eventuell kann mir jemand den UndoManager erklären. Ich initialisiere diesen um gebe ihm ein Jface.document mit, womit er arbeiten soll. Lasse ich nun meinen undoManager.connect(jface.document) weg, welchen ich denke ich auch nicht machen sollte, funktioniert Highlighting und Undo ohne Probleme. Jedoch kein Redo. Frage ich das undomanager.redoable() ab, bekomme ich auch ein true. Jedoch passiert einfach nichts.

Ich hoffe irgendjemand kann mir noch bei der Lösung dieses Problems helfen.

Gruß, Denis
 
Zurück