Я новичок в Xtext и Xtend, и мне нужен совет, как лучше всего решить проблему ниже.Как использовать внешние ресурсы в плагинах, генерируемых xtext?
Я пытаюсь создать настраиваемую поставщику автозаполнения, используя следующий код:
class DomainmodelProposalProvider extends AbstractDomainmodelProposalProvider {
def override completePath_ContentPath(EObject model,
Assignment assignment,
ContentAssistContext context,
ICompletionProposalAcceptor acceptor) {
acceptor.accept(createCompletionProposal("/Root/hello/world", context))
acceptor.accept(createCompletionProposal("/Root/hello/xtext", context))
....
....
}
}
где contentPath
может быть из списка XPath, как строки, и список может быть большим. Что еще более важно, я хочу сделать прогрессивное автозаполнение, то есть если пользователь вводит /Root/h
, он будет предоставлять как Root/hello/world
, так и /Root/hello/xtext
. Но если он войдет в /Root/hello/x
, он предоставит только /Root/hello/xtext
.
план битвы, как показано ниже:
- Как-то прочитал в разрешенном списке строк из файла;
- В приведенном выше
DomainmodelProposalProvider
получить ссылку на список разрешенных списков; - получить текущее значение ContentPath из xtext;
- затем используйте # 3 для фильтрации по списку, полученному из # 1.
- Верните результирующий список.
Но я застрял на первом шаге. Где я могу поместить код чтения внешнего файла в проект xtext (я использую eclipse)? Он должен действовать как синглтон и делать одно только чтение, если я хочу запрограммировать в Xtend, как мне реализовать синглтон?
Любая помощь будет оценена!