私は認めたくないよりも少し長い間、この件名の問題と格闘してきました。
ユーザーが>ボタンをクリックするか、エディターウィンドウ内で右クリックしてから>をActionクリックしたときに発生するのと同じことをプログラムで実行しようとしています。ViewCollapse AllCode FoldingFold All
これまでに試した\発見:
- に
String対応する はAction、enumcom.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ます。actionPerformedActionEvent
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この問題とはまったく関係がない可能性があります)。actionPerformedActionManager
PS
これを行うホットキーがあることは知っていますが(Ctrl+ =)、これは私が探しているものではありません(ホットキーの押下をシミュレートするコマンドがない限り:))。