2016-09-27 15 views
0

HyperlinkHelperをカスタマイズしようとしています。だから私はHypertextDetectorXtext。 HyperlinkHelperを追加できません

ハイパーリンクの検出器が働いている
package org.xtext.example.mydsl.ui; 

import org.eclipse.jface.text.BadLocationException; 
import org.eclipse.jface.text.IDocument; 
import org.eclipse.jface.text.IRegion; 
import org.eclipse.jface.text.ITextViewer; 
import org.eclipse.jface.text.Region; 
import org.eclipse.jface.text.hyperlink.IHyperlink; 
import org.eclipse.xtext.ui.editor.hyperlinking.DefaultHyperlinkDetector; 
import org.eclipse.xtext.ui.editor.hyperlinking.IHyperlinkHelper; 

public class MyHyperlinkDetector extends DefaultHyperlinkDetector { 
    private static final String PREFERENCES = ".hyper"; 

    @Override 
    public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) { 
     IDocument document = textViewer.getDocument(); 
     int offset = region.getOffset(); 

     // extract relevant characters 
     IRegion lineRegion; 
     String candidate; 
     try { 
      lineRegion = document.getLineInformationOfOffset(offset); 
      candidate = document.get(lineRegion.getOffset(), lineRegion.getLength()); 
     } catch (BadLocationException ex) { 
      return null; 
     } 

     // look for keyword 
     int index = candidate.indexOf(PREFERENCES); 
     if (index != -1) { 

      // detect region containing keyword 
      IRegion targetRegion = new Region(lineRegion.getOffset() + index, PREFERENCES.length()); 
      if ((targetRegion.getOffset() <= offset) 
        && ((targetRegion.getOffset() + targetRegion.getLength()) > offset)) 
       // create link 
       return new IHyperlink[] { new PreferencesHyperlink(targetRegion, candidate) }; 
     } 

     return null; 
    } 

    @Override 
    public IHyperlinkHelper getHelper() { 
     // TODO Auto-generated method stub 
     return new MyHyperlinkHelper(); 
    } 
} 

をオーバーライドしていますが、MyHyperlinkHelperが作成されることはありません。たとえ私がメソッドdetectHyperlinksをコメントしても。

私の目標は、編集したDSL文法でクリックした名前でファイルを開くことです。だから私はHyperlinkHelperが必要です。私。私は部分文字列が正しいファイル名であることを確認する必要があります。

どうすれば解決できますか?

よろしく、 ウラジミール。

答えて

0

このメソッドを無効にします。単にGuiceのを使用して、私は私に与えられた文脈でGuiceのを使用しての詳細を与えるをお願いすることがあり

public Class<? extends IHyperlinkHelper> bindIHyperlinkHelper() { 
    return DomainmodelHyperlinkHelper.class; 
} 

またはXTEND

def Class<? extends IHyperlinkHelper> bindIHyperlinkHelper() { 
    return DomainmodelHyperlinkHelper; 
} 
+0

を独自の実装にスーパークラスからメソッドを呼び出しますか?正確に何を買う必要がありますか? –

+0

どのようなコンポーネントですか? –

+0

さて、実際に私は尋ねたいと思う:私はHyperlinkHelper、またはHyperlinkDetectorをbuindする必要がありますか? –

関連する問題