Loading plugins/org.etsi.mts.tdl.tx.ui/src/org/etsi/mts/tdl/ui/contentassist/TDLtxProposalProvider.java +108 −0 Original line number Diff line number Diff line Loading @@ -7,14 +7,23 @@ import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EObject; import org.eclipse.jface.viewers.StyledString; import org.eclipse.xtext.Assignment; import org.eclipse.xtext.CrossReference; import org.eclipse.xtext.RuleCall; import org.eclipse.xtext.nodemodel.util.NodeModelUtils; import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext; import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor; import org.etsi.mts.tdl.CastDataUse; import org.etsi.mts.tdl.Connection; import org.etsi.mts.tdl.DataElementUse; import org.etsi.mts.tdl.DataType; import org.etsi.mts.tdl.DataUse; import org.etsi.mts.tdl.Member; import org.etsi.mts.tdl.MemberReference; import org.etsi.mts.tdl.Message; import org.etsi.mts.tdl.NamedElement; import org.etsi.mts.tdl.Parameter; import org.etsi.mts.tdl.Target; import org.etsi.mts.tdl.StructuredDataInstance; import org.etsi.mts.tdl.StructuredDataType; Loading @@ -24,15 +33,45 @@ import org.etsi.mts.tdl.StructuredDataType; */ public class TDLtxProposalProvider extends AbstractTDLtxProposalProvider { @Override public void complete_ParameterBinding(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { // TODO Auto-generated method stub super.complete_ParameterBinding(model, ruleCall, context, acceptor); // System.out.println("PB:"); } @Override public void completeParameterBinding_Parameter(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { // super.completeParameterBinding_Parameter(model, assignment, context, acceptor); // lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor); // completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); if (model instanceof DataElementUse) { for (Member m : ((StructuredDataType)((DataElementUse) model).resolveDataType()).allMembers()) { acceptor.accept(createCompletionProposal(m.getName(), new StyledString(m.getName()), getImage(m), 1000, "", context)); } } //after comma // System.out.println("s1"); // System.out.println(assignment); } @Override public void complete_ParameterBindingFragment(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { // TODO Auto-generated method stub //before comma!! context: current element // super.complete_ParameterBindingFragment(model, ruleCall, context, acceptor); // model.eContainer() instanceof // if (model instanceof DataElementUse) { // for (Member m : ((StructuredDataType)((DataElementUse) model.eContainer()).resolveDataType()).allMembers()) { // acceptor.accept(createCompletionProposal(m.getName(), new StyledString(m.getName()), getImage(m), 1000, "", context)); // } // } // System.out.println("s2"); // System.out.println(NodeModelUtils.findActualNodeFor(model).getText()); } @Override Loading @@ -51,6 +90,75 @@ public class TDLtxProposalProvider extends AbstractTDLtxProposalProvider { // methods check for valid prefixes and terminal token conflicts. // The acceptor handles null-values gracefully. } @Override public void complete_ParameterReductionFragment(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { // TODO Auto-generated method stub super.complete_ParameterReductionFragment(model, ruleCall, context, acceptor); } @Override public void completeParameterReductionFragment_Reduction(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { // TODO Auto-generated method stub super.completeParameterReductionFragment_Reduction(model, assignment, context, acceptor); } @Override public void complete_ReductionFragment(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { completeMemberReferenceForDataUse(model, context, acceptor, "."); } @Override public void completeReductionFragment_Reduction(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { // TODO Auto-generated method stub super.completeReductionFragment_Reduction(model, assignment, context, acceptor); } @Override public void complete_MemberReference(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { // TODO Auto-generated method stub // super.complete_MemberReference(model, ruleCall, context, acceptor); completeMemberReferenceForDataUse(model, context, acceptor, ""); // if (model instanceof MemberReference) { // DataType dataType = ((MemberReference)model).getMember().getDataType(); // if (dataType instanceof StructuredDataType) { // for (Member m : ((StructuredDataType) dataType).allMembers()) { // acceptor.accept(createCompletionProposal("."+m.getName(), new StyledString(m.getName()), getImage(m), 100000, "", context)); // } // } // } } private void completeMemberReferenceForDataUse(EObject model, ContentAssistContext context, ICompletionProposalAcceptor acceptor, String prefix) { if (model instanceof CastDataUse) { DataType dataType = ((CastDataUse) model).getDataType(); if (dataType instanceof StructuredDataType) { for (Member m : ((StructuredDataType) dataType).allMembers()) { acceptor.accept(createCompletionProposal(prefix+m.getName(), new StyledString(m.getName()), getImage(m), 1000, "", context)); } } } else if (model instanceof DataElementUse) { // System.out.println(model); NamedElement dataElement = ((DataElementUse) model).getDataElement(); if (dataElement instanceof StructuredDataType) { for (Member m : ((StructuredDataType) dataElement).allMembers()) { acceptor.accept(createCompletionProposal(prefix+m.getName(), new StyledString(m.getName()), getImage(m), 100000, "", context)); } } else if (dataElement instanceof StructuredDataInstance) { for (Member m : ((StructuredDataType) ((StructuredDataInstance)dataElement).getDataType()).allMembers()) { acceptor.accept(createCompletionProposal(prefix+m.getName(), new StyledString(m.getName()), getImage(m), 100000, "", context)); } } //TODO: function / parameter } } @Override public void complete_FunctionCall(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { Loading Loading
plugins/org.etsi.mts.tdl.tx.ui/src/org/etsi/mts/tdl/ui/contentassist/TDLtxProposalProvider.java +108 −0 Original line number Diff line number Diff line Loading @@ -7,14 +7,23 @@ import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EObject; import org.eclipse.jface.viewers.StyledString; import org.eclipse.xtext.Assignment; import org.eclipse.xtext.CrossReference; import org.eclipse.xtext.RuleCall; import org.eclipse.xtext.nodemodel.util.NodeModelUtils; import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext; import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor; import org.etsi.mts.tdl.CastDataUse; import org.etsi.mts.tdl.Connection; import org.etsi.mts.tdl.DataElementUse; import org.etsi.mts.tdl.DataType; import org.etsi.mts.tdl.DataUse; import org.etsi.mts.tdl.Member; import org.etsi.mts.tdl.MemberReference; import org.etsi.mts.tdl.Message; import org.etsi.mts.tdl.NamedElement; import org.etsi.mts.tdl.Parameter; import org.etsi.mts.tdl.Target; import org.etsi.mts.tdl.StructuredDataInstance; import org.etsi.mts.tdl.StructuredDataType; Loading @@ -24,15 +33,45 @@ import org.etsi.mts.tdl.StructuredDataType; */ public class TDLtxProposalProvider extends AbstractTDLtxProposalProvider { @Override public void complete_ParameterBinding(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { // TODO Auto-generated method stub super.complete_ParameterBinding(model, ruleCall, context, acceptor); // System.out.println("PB:"); } @Override public void completeParameterBinding_Parameter(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { // super.completeParameterBinding_Parameter(model, assignment, context, acceptor); // lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor); // completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); if (model instanceof DataElementUse) { for (Member m : ((StructuredDataType)((DataElementUse) model).resolveDataType()).allMembers()) { acceptor.accept(createCompletionProposal(m.getName(), new StyledString(m.getName()), getImage(m), 1000, "", context)); } } //after comma // System.out.println("s1"); // System.out.println(assignment); } @Override public void complete_ParameterBindingFragment(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { // TODO Auto-generated method stub //before comma!! context: current element // super.complete_ParameterBindingFragment(model, ruleCall, context, acceptor); // model.eContainer() instanceof // if (model instanceof DataElementUse) { // for (Member m : ((StructuredDataType)((DataElementUse) model.eContainer()).resolveDataType()).allMembers()) { // acceptor.accept(createCompletionProposal(m.getName(), new StyledString(m.getName()), getImage(m), 1000, "", context)); // } // } // System.out.println("s2"); // System.out.println(NodeModelUtils.findActualNodeFor(model).getText()); } @Override Loading @@ -51,6 +90,75 @@ public class TDLtxProposalProvider extends AbstractTDLtxProposalProvider { // methods check for valid prefixes and terminal token conflicts. // The acceptor handles null-values gracefully. } @Override public void complete_ParameterReductionFragment(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { // TODO Auto-generated method stub super.complete_ParameterReductionFragment(model, ruleCall, context, acceptor); } @Override public void completeParameterReductionFragment_Reduction(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { // TODO Auto-generated method stub super.completeParameterReductionFragment_Reduction(model, assignment, context, acceptor); } @Override public void complete_ReductionFragment(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { completeMemberReferenceForDataUse(model, context, acceptor, "."); } @Override public void completeReductionFragment_Reduction(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { // TODO Auto-generated method stub super.completeReductionFragment_Reduction(model, assignment, context, acceptor); } @Override public void complete_MemberReference(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { // TODO Auto-generated method stub // super.complete_MemberReference(model, ruleCall, context, acceptor); completeMemberReferenceForDataUse(model, context, acceptor, ""); // if (model instanceof MemberReference) { // DataType dataType = ((MemberReference)model).getMember().getDataType(); // if (dataType instanceof StructuredDataType) { // for (Member m : ((StructuredDataType) dataType).allMembers()) { // acceptor.accept(createCompletionProposal("."+m.getName(), new StyledString(m.getName()), getImage(m), 100000, "", context)); // } // } // } } private void completeMemberReferenceForDataUse(EObject model, ContentAssistContext context, ICompletionProposalAcceptor acceptor, String prefix) { if (model instanceof CastDataUse) { DataType dataType = ((CastDataUse) model).getDataType(); if (dataType instanceof StructuredDataType) { for (Member m : ((StructuredDataType) dataType).allMembers()) { acceptor.accept(createCompletionProposal(prefix+m.getName(), new StyledString(m.getName()), getImage(m), 1000, "", context)); } } } else if (model instanceof DataElementUse) { // System.out.println(model); NamedElement dataElement = ((DataElementUse) model).getDataElement(); if (dataElement instanceof StructuredDataType) { for (Member m : ((StructuredDataType) dataElement).allMembers()) { acceptor.accept(createCompletionProposal(prefix+m.getName(), new StyledString(m.getName()), getImage(m), 100000, "", context)); } } else if (dataElement instanceof StructuredDataInstance) { for (Member m : ((StructuredDataType) ((StructuredDataInstance)dataElement).getDataType()).allMembers()) { acceptor.accept(createCompletionProposal(prefix+m.getName(), new StyledString(m.getName()), getImage(m), 100000, "", context)); } } //TODO: function / parameter } } @Override public void complete_FunctionCall(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { Loading