ASDTのエディタ画面をカスタマイズ


ソースをみてみよう〜


1.plugin.xml
pluginタグのclass属性を見る。
org.asdt.ActionScript2_Pluginクラス
ここには、pluginの開始/終了処理を書く。
extensionタグのclass属性を見る。
org.asdt.ui.editor.ActionScript2Editorクラス
ここには、拡張ポイントのエディタに関する処理を書く。
今回は、入力補完をしたいので、このソースを見る。


2.ActionScript2Editorクラス
初期化処理のinitializeEditorメソッドを見る。


以下の命令でASConfigurationクラスをインスタンス化している。
setSourceViewerConfiguration(new ASConfiguration(colorManager, this));


3.ASConfigurationクラス
ASConfigurationクラス内では、後でgetContentAssistantメソッドが呼ばれる。
getContentAssistantメソッド内では、入力補完のオブジェクトを設定している。
assistant.setContentAssistProcessor(new ASCompletionProcessor(editor),IDocument.DEFAULT_CONTENT_TYPE);
ASCompletionProcessorクラスですね。


4.ASCompletionProcessorクラス
ASCompletionProcessorクラス内では、後でcomputeCompletionProposalsメソッドが呼ばれる。
computeCompletionProposalsメソッドでは、入力補完のオブジェクトを設定している。
メソッド内では、入力補完のためいくつかのクラスが呼び出されている。
入力補完の提案をする順番はだいたい以下の通りで、
・ローカル変数


・変数


・関数


・キーワード


・importされた型


・テンプレート


となっています。ここに、独自のアルゴリズムを入れて、SpringとかFlexxmlから読み込んだ情報を追加してあげれば、Flex用のPluginとして動きますね。


さっそく、入力補完の提案を追加してみました。

ローカル変数やフィールドの追加


キーワードの追加


テンプレートの追加



なんでもアリになってきた〜。

ASDTのplugin.xml

メインとなるPluginクラスはorg.asdt.ActionScript2_Pluginです。
拡張ポイントはたくさんあります。
・エディタ(org.eclipse.ui.editors)
・ウィザード(org.eclipse.ui.newWizards)
・ネーチャー(org.eclipse.core.resources.natures)
・ネーチャー画像(org.eclipse.ui.ide.projectNatureImages)
・プロパティページ(org.eclipse.ui.propertyPages)
・参照ページ(org.eclipse.ui.preferencePages)
・エディタアクション(org.eclipse.ui.editorActions)
・ポップアップメニュー(org.eclipse.ui.popupMenus)
・コマンド(org.eclipse.ui.commands)
・テンプレート(org.eclipse.ui.editors.templates)
・注釈仕様メーカー(org.asdt.markerAnnotationSpecification)
・ビュー(org.eclipse.ui.views)
・拡張パースペクティブ(org.eclipse.ui.perspectiveExtensions)
さて、どこから手をつけましょうか・・・。