そのため、属性名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 件のコメント:
コメントを投稿