そのため、属性名name以外で判断したい場合は、変更する必要がある。
- 対象
- bindIQualifiedNameProvider
- QualifiedNameを解釈するための定義
- デフォルトでは、DefaultDeclarativeQualifiedNameProviderを使っている。
- 拡張方法
- DefaultDeclarativeQualifiedNameProviderを継承したクラスを作成する。
- QualifiedNameを取得する方法をname->別名に変更する
- MyDslRuntimeModule.xtendでbindするクラスをoverrideで変更する。
/* * generated by Xtext 2.9.1 */ package org.xtext.example.mydsl import org.eclipse.xtext.naming.IQualifiedNameProvider /** * Use this class to register components to be used at runtime / without the Equinox extension registry. */ class MyDslRuntimeModule extends AbstractMyDslRuntimeModule { override Class bindIQualifiedNameProvider() { return MyDslQNP; } }
MyDslQNP.java
package org.xtext.example.mydsl; import org.eclipse.sirius.sample.basicfamily.Identifier; import org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider; import org.eclipse.xtext.naming.QualifiedName; public class MyDslQNP extends DefaultDeclarativeQualifiedNameProvider{ QualifiedName qualifiedName(Identifier e) { return QualifiedName.create(e.getShortName()); } }
Outlineの表示もカスタマイズが必要になる。
MyDslOutlineTreeProvider
class MyDslOutlineTreeProvider extends DefaultOutlineTreeProvider { override protected _text(Object modelElement) { if( modelElement instanceof Identifiable){ return (modelElement as Identifiable).shortName } } }
0 件のコメント:
コメントを投稿