Xtext - 如何按文件名进行交叉引用?

时间:2018-03-20 14:29:07

标签: java xtext cross-reference

我想在XText中交叉引用,而不是使用另一个文件中的某个属性,而是使用文件元数据(文件名)。

import: "string_msg/msg/StringMessage"

inputs:
    name: testString
    type: types.string_msg.StringMessage   # this is the cross-reference
    description: "Here goes some type of description or the other"      

语言“string_msg / msg / StringMessage”只属于包含属性信息,而不包含类型名称。我必须从文件名派生类型名称,但理想情况下可以使引用文件的模型对象可用。

我该怎么做?到目前为止我看到的所有示例都通过其name属性引用了其他EObject。

1 个答案:

答案 0 :(得分:0)

您可以调整public class MyViewModel : ViewModelBase { public MyItems MySelectedItem { get { return mySelectedItem; } set { mySelectedItem= value; InitiateBgWorker(); OnPropertyChanged("MySelectedItem"); } } } // Other properties, methods, etc. } 并使用IQualifiedNameProvider s EObject和资源eResource来计算名称。

URI

别忘了绑定

package org.xtext.example.mydsl10;

import org.eclipse.emf.common.util.URI;
import org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider;
import org.eclipse.xtext.naming.QualifiedName;
import org.xtext.example.mydsl10.myDsl.Greeting;

public class MyDslNameProvider extends DefaultDeclarativeQualifiedNameProvider {

    public QualifiedName qualifiedName(Greeting g) {
        URI uri = g.eResource().getURI();
        // this is your job 
        String simpleName = uri.trimFileExtension().lastSegment();
        return QualifiedName.create(simpleName, g.getName());
    }

}