下面列出了org.eclipse.jface.text.IAutoEditStrategy#org.eclipse.xtext.ui.editor.ISourceViewerAware 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* Method copied from super class with only a minor change: call to "readOnly" changed to "tryReadOnly".
*/
@Override
public IHyperlink[] detectHyperlinks(final ITextViewer textViewer, final IRegion region,
final boolean canShowMultipleHyperlinks) {
final IDocument xtextDocument = textViewer.getDocument();
if (!(xtextDocument instanceof N4JSDocument)) {
return super.detectHyperlinks(textViewer, region, canShowMultipleHyperlinks);
}
final IHyperlinkHelper helper = getHelper();
return ((N4JSDocument) xtextDocument).tryReadOnly(new IUnitOfWork<IHyperlink[], XtextResource>() {
@Override
public IHyperlink[] exec(XtextResource resource) throws Exception {
resource = tryConvertToFileResource(resource);
if (resource == null) {
return null;
}
if (helper instanceof ISourceViewerAware && textViewer instanceof ISourceViewer) {
((ISourceViewerAware) helper).setSourceViewer((ISourceViewer) textViewer);
}
return helper.createHyperlinksByOffset(resource, region.getOffset(), canShowMultipleHyperlinks);
}
}, (IHyperlink[]) null);
}
public List<IAutoEditStrategy> getStrategies(final ISourceViewer sourceViewer,final String contentType) {
final List<IAutoEditStrategy> strategies = Lists.newArrayList();
configure(new IEditStrategyAcceptor() {
@Override
public void accept(IAutoEditStrategy strategy, String type) {
if (type == null || contentType.equals(type)) {
if (strategy instanceof ISourceViewerAware) {
((ISourceViewerAware) strategy).setSourceViewer(sourceViewer);
}
if (strategy instanceof VerifyKeyListener) {
sourceViewer.getTextWidget().addVerifyKeyListener((VerifyKeyListener) strategy);
}
strategies.add(strategy);
}
}
});
return strategies;
}
@Override
public void install(ITextViewer textViewer) {
if (!isInstalled) {
this.textViewer = textViewer;
textInputListener = new TextInputListener();
textViewer.addTextInputListener(textInputListener);
handleInputDocumentChanged(null, textViewer.getDocument());
if (textViewer instanceof ISourceViewerExtension4) {
ContentAssistantFacade facade = ((ISourceViewerExtension4) textViewer).getContentAssistantFacade();
if (facade == null) {
shouldInstallCompletionListener = true;
} else {
facade.addCompletionListener(documentListener);
}
if (strategy instanceof ISourceViewerAware) {
((ISourceViewerAware) strategy).setSourceViewer((ISourceViewer) textViewer);
}
}
isInstalled = true;
}
}
@Override
public void setSourceViewer(ISourceViewer sourceViewer) {
if (getHovers() != null) {
for (ITextHover hover : getHovers()) {
if (hover instanceof ISourceViewerAware)
((ISourceViewerAware) hover).setSourceViewer(sourceViewer);
}
}
}
@Override
public IHyperlink[] detectHyperlinks(final ITextViewer textViewer, final IRegion region, final boolean canShowMultipleHyperlinks) {
return xtextDocumentUtil.getXtextDocument(textViewer).tryReadOnly(new IUnitOfWork<IHyperlink[],XtextResource>() {
@Override
public IHyperlink[] exec(XtextResource resource) throws Exception {
if (helper instanceof ISourceViewerAware && textViewer instanceof ISourceViewer) {
((ISourceViewerAware) helper).setSourceViewer((ISourceViewer) textViewer);
}
return helper.createHyperlinksByOffset(resource, region.getOffset(), canShowMultipleHyperlinks);
}
});
}
public DotHtmlLabelAdaptingTextHover() {
IEObjectHover hover = injector.getInstance(IEObjectHover.class);
if (hover instanceof ISourceViewerAware) {
((ISourceViewerAware) hover).setSourceViewer(sourceViewer);
}
this.hover = hover;
}
@Override
public ITextHover getTextHover(ISourceViewer sourceViewer,
String contentType) {
if (contentType.equals(
DotTerminalsTokenTypeToPartitionMapper.HTML_STRING_PARTITION)) {
ITextHover hover = htmlHoverProvider.get();
if (hover instanceof ISourceViewerAware) {
((ISourceViewerAware) hover).setSourceViewer(sourceViewer);
}
return hover;
}
return super.getTextHover(sourceViewer, contentType);
}