package org.xtext.example.mydsl2.ui;
import javax.inject.Inject;
import org.eclipse.core.runtime.content.IContentType;
import org.eclipse.emf.common.util.URI;
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;
import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.resource.XtextResourceSet;
import org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialEditingContentAssistContextFactory;
import org.eclipse.xtext.ui.codetemplates.ui.partialEditing.PartialEditingContentAssistContextFactory;
import org.eclipse.xtext.ui.editor.XtextSourceViewer;
import org.eclipse.xtext.ui.editor.contentassist.CompletionProposalComputer.State;
import org.eclipse.xtext.ui.editor.contentassist.antlr.DelegatingContentAssistContextFactory.StatefulFactory;
import org.eclipse.xtext.ui.editor.embedded.EmbeddedEditor;
import org.eclipse.xtext.ui.editor.embedded.EmbeddedEditorFactory;
import org.eclipse.xtext.ui.editor.embedded.IEditedResourceProvider;
import org.xtext.example.mydsl2.parser.antlr.MyDslParser;
import org.xtext.example.mydsl2.services.MyDslGrammarAccess;
import com.google.inject.Provider;
public class ViewPart1 extends ViewPart {
@Inject
EmbeddedEditorFactory embeddedEditorFactory;
@Inject
PartialEditingContentAssistContextFactory fac;
@Inject
private Provider<StatefulFactory> statefulFactoryProvider;
public Provider<? extends StatefulFactory> getStatefulFactoryProvider() {
return statefulFactoryProvider;
}
private EmbeddedEditor withParent;
@Inject
MyDslGrammarAccess ga;
@Inject
Provider<XtextResourceSet> rsp;
public ViewPart1() {
// TODO Auto-generated constructor stub
}
static class RuleBParser extends MyDslParser {
@Override
protected String getDefaultRuleName() {
return "RuleB";
}
}
@Inject
Provider<RuleBParser> parserProvider;
@Override
public void createPartControl(Composite parent) {
//getStatefulFactoryProvider().get().getDelegate().initializeFor(ga.getRuleBRule());
IEditedResourceProvider resourceProvider = new IEditedResourceProvider() {
@Override
public XtextResource createResource() {
XtextResourceSet rs = rsp.get();
XtextResource r = (XtextResource) rs.createResource(URI.createURI("dummy.mydsl2"));
r.setParser(parserProvider.get());
return r;
}
};
withParent = embeddedEditorFactory.newEditor(resourceProvider).withParent(parent);
XtextSourceViewer viewer = withParent.getViewer();
IContentAssistProcessor contentAssistProcessor = ((XtextSourceViewer)viewer).getContentAssistant().getContentAssistProcessor("__string");
if (contentAssistProcessor instanceof State) {
((IPartialEditingContentAssistContextFactory)((State)contentAssistProcessor).getContextFactory()).initializeFor(ga.getRuleBRule());
}
withParent.createPartialEditor();
}
@Override
public void setFocus() {
// TODO Auto-generated method stub
}
}