私のプロジェクトでハイパーリンクのカスタム処理を作成したいのですが、サンプルやチュートリアルは見つかりませんでした。Xtextのハイパーリンク方法?
は、私はあなたが私にいくつかの例、またはチュートリアルのリンクを与えることを聞いても?
私のプロジェクトでハイパーリンクのカスタム処理を作成したいのですが、サンプルやチュートリアルは見つかりませんでした。Xtextのハイパーリンク方法?
は、私はあなたが私にいくつかの例、またはチュートリアルのリンクを与えることを聞いても?
他のファイルがEMFリソースによってバックアップされている場合、あなたはそれからのXtextでインデックスして、一意のリソースを識別し、特にインデックスEMFオブジェクト、そしてあなたの文法でそれらへの参照を追加することができます。クリスチャンが示唆したように、あなたがHyperlinkHelper
をカスタマイズすることができます別の方法として
。問題は、そのような参照の概念が存在するはずのすべてのUIコンポーネントをカスタマイズする必要があることです。参照を見つける。上記のように明示的に参照をモデル化すると、この問題は発生しません。
私はHyperlinkHelperのカスタマイズについて知っていますが、その例を得るのが欲しいです。または、チュートリアルかもしれない –
私はアンサーを持っています。私達はちょうどメソッドクラスの
def Class<? extends DefaultHyperlinkDetector> bindDefaultHyperlinkDetector()
AbstractMyDslUiModule
は、私はクラスDefaultHyperlinkDetector
を上書きする必要以上に次のよう/*
* generated by Xtext 2.9.2
*/
package org.xtext.example.mydsl.ui
import org.eclipse.xtend.lib.annotations.FinalFieldsConstructor
import org.eclipse.xtext.ui.editor.hyperlinking.DefaultHyperlinkDetector
/**
* Use this class to register components to be used within the Eclipse IDE.
*/
@FinalFieldsConstructor
class MyDslUiModule extends AbstractMyDslUiModule {
def Class<? extends DefaultHyperlinkDetector> bindDefaultHyperlinkDetector() {
return MyHyperlinkDetector;
}
}
でそれを行います上書き必要がある。これを行うために
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 = "Hello";
@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) };
}
return null;
}
}
そして次は、私たちは、ページがお勧めする私たちを求めて
質問を開いたりします「こんにちは」のサブストリング、「環境設定」をクリックすると、このようにIHyperlinkインターフェースIHyperlink
を実装する必要がありますStack Overflowの本、ツール、ソフトウェアライブラリ、チュートリアル、その他のオフサイトリソースは、オピニオンレスポンスやスパムを引き付ける傾向があるため、トピックではありません。代わりに、問題を説明し、それを解決するためにこれまでに何が行われているかを記述します。 –
あなたは、適用したいハイパーリンクのカスタマイズの種類をより具体的にすることができます。 HyperlinkHelperのコードは複雑ではありません。しかし、どんな要件もなく、指示を指すのは難しいです。 –
私は次のようにします。私の文法は、別のファイルのリンクのセットです。 Ctrl +クリック機能を追加したいと思います。私。リンクエディタでctrl +クリック(またはf3キーを押す)すると、リンクされたファイルが開きます。 よろしく、ウラジミール –