Reflective Ecore Model Editorを使う

EMFモデルを定義した後、そのモデルのインスタンスを編集する場合、通常EMFジェネレータを用いてモデルコード、Editコード、Editorコードを自動生成させ、そのEditorを利用します。

あまり知られていませんが、Dynamic Browsing and Instantiation Capabilites in EMF - Eclipsepediaに紹介されているように、Editorコードを自動生成させなくても、EMFモデルのインスタンスを編集することができます。つまり、.ecoreファイルのみ用意して、そのファイルで定義されているEMFモデルのインスタンスを編集可能なReflective Ecore Model Editorが用意されています。

まず、EMFモデルを用意します。ここでは例として、EMF SDK Exampleに含まれるLibraryモデルを使用します。その.ecoreファイルを開き、EMFモデルのルートクラスの上で右クリックします。すると、「Create Dynamic Instance...」というメニュー項目がありますので、それを選択します。

すると、新規ファイル作成ウィザードが起動しますので、ファイル名を指定します。拡張子は.xmiです。そうすると、EMFモデルから自動生成したEditorコードによるエディタのようなモデル編集エディタが起動し、EMFモデルのインスタンスを編集できます。(もし、WTP等をインストールしている場合、XMLエディタが起動してしまうかもしれません。その場合には、上記.xmiファイルを右クリックして「Open With」メニューから「Sample Reflective Ecore Model Editor」を選択してください)

Exeedを使ってReflective Ecore Model Editorの見た目を改善する

Reflective Ecore Model Editorを使うと、.ecoreファイルのみからEMFモデルのインスタンスを編集できます。しかし、そのエディタで使用されるアイコンやテキストラベルはちょっと愛想がありません。そこで、それらの見た目をカスタマイズするExeedというプラグインがあります。
Epsilon
ExeedはEpsilonというパッケージに含まれるもので、EMFモデル定義におけるEAnnotationを使って、モデル要素に対応するアイコンやラベルを指定します(EOLという独自の文法で記述します)。そして、その.ecoreファイルからReflective Ecore Model Editorを起動すると先ほど指定したアイコンやラベルが表示されます。