Klasse LineCursor
Klasse für einen Linien-Cursor.
Unterschrift:
export declare class LineCursor extends Marker
Erweitert: Marker
Konstruktoren
Konstruktor | Modifikatoren | Beschreibung |
---|---|---|
(constructor)(workspace) | Erstellt eine neue Instanz der Klasse LineCursor . |
Attribute
Attribut | Modifikatoren | Typ | Beschreibung |
---|---|---|---|
type | String | ||
Arbeitsbereich |
|
WorkspaceSvg |
Methoden
Methode | Modifikatoren | Beschreibung |
---|---|---|
atEndOfLine() | Gibt „true“ zurück, wenn der Knoten, zu dem wir navigieren würden, wenn „in()“ aufgerufen würde, derselbe ist wie der Knoten, zu dem wir navigieren würden, wenn „next()“ aufgerufen würde. Das ist der Fall, wenn sich der LineCursor am Ende der „aktuellen Zeile“ des Programms befindet. | |
getCurNode() | Aktuelle Cursorposition abrufen Überschreibt die normale Marker-Funktion „getCurNode“, um den aktuellen Knoten aus dem ausgewählten Block zu aktualisieren. Dies geschieht in der Regel über den Auswahl-Listener, der jedoch nicht sofort aufgerufen wird, wenn |
|
getFirstNode() | Ruft den ersten navigierbaren Knoten im Arbeitsbereich ab oder „null“, wenn keiner vorhanden ist. | |
getLastNode() | Gibt den letzten navigierbaren Knoten im Arbeitsbereich zurück oder „null“, wenn keiner vorhanden ist. | |
getNextNode(node, isValid, loop) | Ruft den nächsten Knoten im AST ab und ermöglicht optional Loopback. | |
getPreviousNode(node, isValid, loop) | Ruft den vorherigen Knoten im AST ab und erlaubt optional Loopback. | |
in() | Verschiebt den Cursor zur nächsten Eingabeverbindung oder zum nächsten Feld in der Preorder-Traversierung. | |
next() | Verschiebt den Cursor zum nächsten Block oder Arbeitsbereichskommentar in der Preorder-Traversierung. | |
out() | Bewegt den Cursor zur vorherigen Eingabeverbindung oder zum vorherigen Feld in der Preorder-Traversierung. | |
postDelete() | Bewegen Sie den Cursor nach dem Löschen eines Blocks zum ersten gültigen Speicherort in „this.potentialNodes“. | |
preDelete(deletedBlock) | Bereite die Löschung eines Blocks vor, indem du eine Liste der Knoten erstellst, zu denen wir den Cursor danach verschieben könnten, und speichere sie in „this.potentialNodes“. Rufen Sie nach dem Löschen „postDelete“ auf, um das Element zum ersten gültigen Knoten in der Liste zu verschieben. Die Standorte, die Sie ausprobieren sollten (in der Reihenfolge der Präferenz): – Der aktuelle Standort. – Die Verbindung, mit der der gelöschte Block verknüpft ist. – Der Block, der mit der nächsten Verbindung des gelöschten Blocks verbunden ist. – Der übergeordnete Block des gelöschten Blocks. – Eine Position im Arbeitsbereich unter dem gelöschten Block. N.B.: Wenn ein Block gelöscht wird, werden auch alle Blöcke gelöscht, die mit den Eingaben dieses Blocks verbunden sind, nicht aber Blöcke, die mit der nächsten Verbindung verbunden sind. |
|
prev() | Der Cursor wird zum vorherigen Block oder Arbeitsbereichskommentar in der Preorder-Traversierung verschoben. | |
setCurNode(newNode) | Legen Sie die Position des Cursors fest und zeichnen Sie ihn. Überschreibt die normale Logik von Marker.setCurNode, um stattdessen „this.drawMarker()“ anstelle von „this.drawer.draw()“ direkt aufzurufen. |