Asakusa Framework Advent Calendar 2015の21日目です。
拙作DMDL EditorXの機能紹介、今日は検索機能です。
Ctrl+Shift+F3を押すと、「Open Model Element」ダイアログが開きます。
ここでデータモデル名やプロパティー名を入力すると、それが定義されている場所へジャンプすることが出来ます。
はい、これはDMDL EditorXが利用しているXtextの機能ですw
検索条件に「EClass name」を指定できるようになっているのですが、これはDMDL用に定義しているクラス名そのもの(ModelDefinitionとか)なので、正直、これを使えるのは自分だけかと(爆)
そこで、DMDL専用の検索機能を作ったので、こちらを使う方が便利だと思います。
ツールバーの「データモデル・プロパティーを検索」というボタンを押すとデータモデル検索ダイアログが開きます。
データモデル・プロパティーの名前の他に説明(ダブルクォーテーションで囲まれた部分)等も検索条件に入れることが出来ます。
この検索条件は、基本的に正規表現です。特殊なのは、「*」を入力した場合は「.*」として扱うことです。
なので、「^foo」でfooから始まるもの、「foo$」でfooで終わるもの、といった条件を指定できます。
dmdlファイル上でデータモデル名やプロパティー名を右クリックしてコンテキストメニューを開き、「Find References」を実行すると、そのデータモデルやプロパティーを参照している箇所を検索できます。dmdlファイル限定ですが、他のdmdlファイル内で使っている場合でも検索結果に表示されます。
Ctrl+Shift+Gでも実行可能です。
はい、これもXtextの機能です。
コンテキストメニューには「Asakusa DSL References」というメニューがあります。
これは、データモデルやプロパティーが使われている箇所をJavaソース内から検索する機能です。
特にOperatorクラス内やフロー(JobFlow/FlowPart)クラスで使われている箇所を探す機能は非常によく使っています(笑)
なお、JobFlow/FlowPartクラスかどうかの判定は、クラスにアノテーションが付いているかどうかで行っています。
Importer/Exporterクラスかどうかの判定は、Importer/Exporterのインターフェースを実装しているかどうかで行っています。
Operatorかどうかは、上記でないもの全てをOperator扱いしています^^; つまり、Operatorとして検索すると、全く無関係のユーティリティークラス等も検索対象に含まれます。
また、これらの判定に意外と時間がかかるので、検索の実行は(普通のEclipseの検索に比べて)少し遅いです。
また、コンテキストメニューの「Asakusa DSL References」→「Open Search Dialog」を選ぶか、メニューバーの「Search」→「Search」を選ぶか、Ctrl+Hを押すと、検索ダイアログが開きます。ここの「DataModel Search」タブで、データモデルやプロパティーをJavaソースから検索する条件をもっと細かく指定して検索することが出来ます。