Wie führe ich "collapse-all-folds" im MATLAB-Editor programmatisch aus?

8

Ich habe schon länger mit dem Problem in dem Thema gekämpft, als ich zugeben möchte.

Ich versuche, dieselbe Action programmatisch auszuführen, wenn der Benutzer entweder auf View & gt; Collapse All oder klicken Sie mit der rechten Maustaste innerhalb des Editorfensters und dann Code Folding & gt; Fold All .

Was ich bisher versucht habe:

  • Das String , das dem Action entspricht, befindet sich möglicherweise in enum com.mathworks.mde.editor.ActionID und ist: 'collapse-all-folds' .
  • Wenn Action aktiviert wird, scheint die folgende Methode ausgeführt zu werden: org.netbeans.api.editor.fold.FoldUtilities.collapseAll(...) (daher das netbeans-Tag).
  • Dieser Code ermöglicht es mir Instanzen von EditorAction , ActionManager , MatlabEditor :
  • zu erhalten

%Vor%

Mein Problem ist, dass ich keinen Weg finden kann, das Action zu aktivieren

Irgendwelche Ideen / Alternativen?

EDIT1 Nachdem ich etwas in "the book" gegraben habe, glaube ich, dass ich gekommen bin noch näher als vorher (aber immer noch nicht ganz da). Zitat aus dem Buch:

  

Java-GUI-Komponenten verwenden oft ActionMap , um runnable Actions zu speichern   Wird von Listenern bei Maus-, Tastatur-, Eigenschaften- oder Containerereignissen aufgerufen. Im Gegensatz zu Objektmethoden kann Actions nicht direkt von MATLAB aufgerufen werden.

Und dann wird eine Problemumgehung erklärt, die ungefähr beinhaltet: eine Art von Action -Objekt zu bekommen; Erstellen eines ActionEvent und Aufrufen von Action 's actionPerformed mit dem ActionEvent als Argument, wie unten implementiert:

%Vor%

Dieser Code läuft ohne Fehler - tut aber (scheinbar?) nichts. Ich vermute, dass ich ActionEvent und actionPerformed für die falschen Objekte anrufe ( ActionManager hat möglicherweise überhaupt nichts mit diesem Problem zu tun).

P.S.

Ich weiß, dass es einen Hotkey gibt, der das tut ( Ctrl + = ), aber das ist nicht das, wonach ich suche (es sei denn, es gibt einen Befehl, einen Hotkey zu drücken :)) / strike>

    
Dev-iL 23.09.2014, 11:44
quelle

2 Antworten

3

Nach unermesslichem Graben, Versuch und viel zu viel Fehler - ich habe es geschafft!

%Vor%

oder wenn in einen einzigen, unordentlichen Befehl komprimiert:

%Vor%

Beachten Sie, dass dies für das aktuell im Editor geöffnete Skript funktioniert.

    
Dev-iL 07.10.2014, 22:42
quelle
1

Keine perfekte Lösung , aber simulieren der Standard-Hotkey-Taste mit java.awt.robot ist möglich.

... einen Weg zu finden, die Aktion direkt auszulösen, wäre besser ...

%Vor%     
RTL 23.09.2014 16:52
quelle

Tags und Links