Преглед изворни кода

added code completion for trigger events on transitions

Andreas Mülder пре 14 година
родитељ
комит
21fff037e2

+ 6 - 0
plugins/org.yakindu.sct.model.stext.ui/src/org/yakindu/sct/model/stext/ui/STextUiModule.java

@@ -4,6 +4,8 @@
 package org.yakindu.sct.model.stext.ui;
 
 import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.ParserBasedContentAssistContextFactory.StatefulFactory;
+import org.yakindu.sct.model.stext.ui.contentassist.STextStatefulFactory;
 
 /**
  * Use this class to register components to be used within the IDE.
@@ -15,4 +17,8 @@ public class STextUiModule extends org.yakindu.sct.model.stext.ui.AbstractSTextU
 	public STextUiModule(AbstractUIPlugin plugin) {
 		super(plugin);
 	}
+	
+	public Class<? extends StatefulFactory> bindStatefulFactory () {
+		return STextStatefulFactory.class;
+	}
 }

+ 40 - 0
plugins/org.yakindu.sct.model.stext.ui/src/org/yakindu/sct/model/stext/ui/contentassist/STextStatefulFactory.java

@@ -0,0 +1,40 @@
+package org.yakindu.sct.model.stext.ui.contentassist;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.parser.IParseResult;
+import org.eclipse.xtext.resource.XtextResource;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext.Builder;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.ParserBasedContentAssistContextFactory.StatefulFactory;
+
+/**
+ * This class is used to always set a current model when the context for the
+ * proposal provider is created. It is used to propose Events as Transition
+ * triggers.
+ * 
+ */
+public class STextStatefulFactory extends StatefulFactory {
+	private IParseResult parseResult;
+
+	@Override
+	public ContentAssistContext[] create(ITextViewer viewer, int offset,
+			XtextResource resource) throws BadLocationException {
+		this.parseResult = resource.getParseResult();
+		return super.create(viewer, offset, resource);
+	}
+
+	@Override
+	public Builder doCreateContext(INode lastCompleteNode,
+			EObject currentModel, EObject previousModel, INode currentNode,
+			String prefix) {
+		if (currentModel == null) {
+			currentModel = parseResult.getRootASTElement();
+		}
+		Builder result = super.doCreateContext(lastCompleteNode, currentModel,
+				previousModel, currentNode, prefix);
+		return result;
+	}
+}