2016-01-21 83 views
0

我是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

的作戰計劃是如下:

  1. 從文件中允許的字符串列表不知何故閱讀;
  2. 在上面的DomainmodelProposalProvider中,獲取對允許列表的引用;
  3. 從xtext獲取當前的ContentPath值;
  4. 然後使用#3過濾從#1獲得的列表。
  5. 返回結果列表。

但我被困在第一步。我在哪裏把讀取外部文件的代碼放在xtext項目中(我正在使用eclipse)?它應該充當單身人士,只做一次閱讀,如果我想在Xtend中編程,我該如何實現單身人士?

任何幫助將不勝感激!

回答

0

將其綁定到YourLanguageRuntimeModule.java中,然後@將其注入到提案提供程序中。 Guice只會默認創建一個,所以不要擔心將它作爲單例實現。