Meditor: Unterschied zwischen den Versionen

Aus Physik
Zur Navigation springen Zur Suche springen
Zeile 32: Zeile 32:
   
 
Der Partitioner ist<tt>FastPartitioner</tt> (war vorher der deprecated <tt>DefaultPartitioner</tt>)
 
Der Partitioner ist<tt>FastPartitioner</tt> (war vorher der deprecated <tt>DefaultPartitioner</tt>)
  +
  +
  +
Weiters gibt es <span style="color:#00CC44"><tt>MatlabScanner</tt></span>, welche allerdings nur für die Erstellung eines <tt>DefaultDamageRepairer</tt> in der Funktion <span style="color:#00CC44"><tt>MatlabConfiguration.getPresentationReconciler(...)</tt></span> verwendet wird.
  +
java.lang.Object
  +
|- org.eclipse.jface.text.rules.RuleBasedScanner
  +
|- at.tugraz.itp.mltutor.meditor.editors.<span style="color:#00CC44">MatlabScanner</span>
  +
Anmerkung: <tt>RuleBasedPartitionScanner</tt> ist nur für <tt>IPredicateRules</tt>.
   
   
Zeile 69: Zeile 76:
 
# Einen <tt>DocumentProvider</tt> erweitern um ein <tt>IDocument</tt> Objekt, welches die Datenrepräsentation darstellt, zu erhalten. Dies ist auch der Ausgangspunkt für Notifacations.
 
# Einen <tt>DocumentProvider</tt> erweitern um ein <tt>IDocument</tt> Objekt, welches die Datenrepräsentation darstellt, zu erhalten. Dies ist auch der Ausgangspunkt für Notifacations.
 
# Actions werden in der Funktion <tt>createActions()</tt> (Memberfunktion des erzeugten Editors) hinzugefügt.
 
# Actions werden in der Funktion <tt>createActions()</tt> (Memberfunktion des erzeugten Editors) hinzugefügt.
  +
  +
  +
==Fragen==
  +
  +
* Warum werden die Keywords in einer eigenen Klasse (MatlabScanner) nur für den DefaultDamageRepairer und nicht für die Partitionierung verwendet? <br> Oder anders gefragt: Wozu MatlabScanner und MatlabPartitionScanner.

Version vom 13. November 2005, 16:30 Uhr

Ziel

Ein professioneller Editor für Matlab

Features:

  • Syntax-Highlighting
  • Automatische Einrückung
  • Matching Brackets
  • Templates?


Vorhandene Strukturen

In grün Geschriebenes sind die selbst entwickelten Klassen.

Editor

...
  |- org.eclipse.ui.texteditor.AbstractTextEditor
       |- org.eclipse.ui.texteditor.StatusTextEditor
            |- org.eclipse.ui.texteditor.AbstractDecoratedTextEditor
                 |- org.eclipse.ui.editors.text.TextEditor
                      |- at.tugraz.itp.mltutor.meditor.editors.MatlabEditProjection
                           |- at.tugraz.itp.mltutor.meditor.editors.MatlabEditor


Partitionierung des Dokuments

PartitionScanner ist MatlabPartitionScanner.

java.lang.Object
  |- org.eclipse.jface.text.rules.RuleBasedScanner
       |- org.eclipse.jface.text.rules.BufferedRuleBasedScanner
            |- org.eclipse.jface.text.rules.RuleBasedPartitionScanner
                 |- at.tugraz.itp.mltutor.meditor.editors.MatlabPartitionScanner

Der Partitioner istFastPartitioner (war vorher der deprecated DefaultPartitioner)


Weiters gibt es MatlabScanner, welche allerdings nur für die Erstellung eines DefaultDamageRepairer in der Funktion MatlabConfiguration.getPresentationReconciler(...) verwendet wird.

java.lang.Object
  |- org.eclipse.jface.text.rules.RuleBasedScanner
       |- at.tugraz.itp.mltutor.meditor.editors.MatlabScanner

Anmerkung: RuleBasedPartitionScanner ist nur für IPredicateRules.


Weitere Schritte

Partitionierung

  • Schön wäre es, wenn auch Regular Expressions für die Partitionierung verwendet werden könnten. Damit könnten z.B. Variablen erkannt werden, weiters ist es besonders praktisch, dass die RegEx bereits entwickelt sind.
    • Leider gibt es als Futter für den RuleBasedScanner nur die Klassen:
      1. NumberRule
      2. PatternRule, davon abgeleitet:
        • MultiLineRule
        • SingleLineRule
      3. WhitespaceRule
      4. WordRule
    • Idee: Eine Klasse für RegEx schreiben, die IRule oder IPredicateRule implementiert.


Diverses

Anmerkungen zur Entwicklung

Folgende Plugins werden vom Meditor-Plugin benötigt (einzutragen bei Dependencies)

  • org.eclipse.ui
  • org.eclipse.core.runtime
  • org.eclipse.ui.workbench.texteditor
  • org.eclipse.jface.text
  • org.eclipse.ui.editors
  • org.eclipse.core.resources
  • org.eclipse.ui.ide
  • org.eclipse.ui.views
  • org.eclipse.jdt.ui

Erstellen eines eigenen Editors (nur Anmerkungen)

  1. Klasse von AbstractTextEditor ableiten
  2. Klasse von SourceViewerConfiguration ableiten
    Dies ist der Ausgangspunkt für das Hinzufügen von eigenen Funktionalitäten
  3. Einen DocumentProvider erweitern um ein IDocument Objekt, welches die Datenrepräsentation darstellt, zu erhalten. Dies ist auch der Ausgangspunkt für Notifacations.
  4. Actions werden in der Funktion createActions() (Memberfunktion des erzeugten Editors) hinzugefügt.


Fragen

  • Warum werden die Keywords in einer eigenen Klasse (MatlabScanner) nur für den DefaultDamageRepairer und nicht für die Partitionierung verwendet?
    Oder anders gefragt: Wozu MatlabScanner und MatlabPartitionScanner.