私は認めたくないよりも少し長い間、この件名の問題と格闘してきました。
ユーザーが>ボタンをクリックするか、エディターウィンドウ内で右クリックしてから>をAction
クリックしたときに発生するのと同じことをプログラムで実行しようとしています。View
Collapse All
Code Folding
Fold All
これまでに試した\発見:
- に
String
対応する はAction
、enum
com.mathworks.mde.editor.ActionID
および にあります'collapse-all-folds'
。 - が
Action
アクティブ化されると、次のメソッドが実行されるようです:org.netbeans.api.editor.fold.FoldUtilities.collapseAll(...)
(したがって、netbeans タグ)。 - このコードにより
EditorAction
、 、ActionManager
、のインスタンスを取得できMatlabEditor
ます。
jEd = com.mathworks.mlservices.MLEditorServices.getEditorApplication.getActiveEditor;
jAm = com.mathworks.mde.editor.ActionManager(jEd);
jAc = com.mathworks.mde.editor.EditorAction('collapse-all-folds');
私の問題は、実際に をアクティブにする方法が見つからないことAction
です。
アイデア/代替案はありますか?
EDIT1 : 「本」を少し掘り下げた後、以前よりもさらに近づいたと思います(ただし、まだ十分ではありません)。本からの引用:
Java GUI コンポーネントは、多くの場合、 を使用して、マウス、キーボード、プロパティ、またはコンテナーのイベントでリスナーによって呼び出される
ActionMap
ランナブルを格納します。Actions
オブジェクト メソッドとは異なりActions
、MATLAB から直接呼び出すことはできません。
次に、大まかに次のような回避策を説明します。ある種のAction
オブジェクトを取得します。以下に実装されているように、 を作成し、 を引数としてActionEvent
を呼び出しAction
ます。actionPerformed
ActionEvent
import java.awt.event.*;
jEd = com.mathworks.mlservices.MLEditorServices.getEditorApplication.getActiveEditor;
jAm = com.mathworks.mde.editor.ActionManager(jEd);
jAc = jAm.getAction(com.mathworks.mde.editor.EditorAction('collapse-all-folds'));
jAe = ActionEvent(jAm, ActionEvent.ACTION_PERFORMED, '');
jAc.actionPerformed(jAe);
このコードはエラーなしで実行されますが、(一見?) 何もしません。私は間違ったオブジェクトを呼び出していると思われます (ActionEvent
この問題とはまったく関係がない可能性があります)。actionPerformed
ActionManager
PS
これを行うホットキーがあることは知っていますが(Ctrl
+ =
)、これは私が探しているものではありません(ホットキーの押下をシミュレートするコマンドがない限り:))。