Loading plugins/org.etsi.mts.tdl.tx.ui/src/org/etsi/mts/tdl/ui/contentassist/TDLtxProposalProvider.java +127 −0 Original line number Diff line number Diff line Loading @@ -831,4 +831,131 @@ public class TDLtxProposalProvider extends AbstractTDLtxProposalProvider { super.completeReceiveMessage_Argument(model, assignment, context, acceptor); } //--------------------------------------------------------------- //TO-specific completions //copied from above -> reuse where no change //TODO: refer to base rules if nothing specific //--------------------------------------------------------------- public void complete_TODataElementUse(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { complete_DataElementUse(model, ruleCall, context, acceptor); } public void completeTODataElementUse_DataElement(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { completeDataElementUse_DataElement(model, assignment, context, acceptor); } @Override public void complete_TOParameterBinding(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { complete_ParameterBinding(model, ruleCall, context, acceptor); } @Override public void completeTOParameterBinding_Parameter(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { completeParameterBinding_Parameter(model, assignment, context, acceptor); } @Override public void completeTOParameterBindingFragment_Argument(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { completeParameterBindingFragment_Argument(model, assignment, context, acceptor); } @Override public void completeTOParameterBinding_DataUse(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { //TODO: relevant? if (model instanceof ParameterBinding) { //adapted for TO! var pb = ((ParameterBinding) model); var type = pb.getParameter().getDataType(); completeAssignment(model, context, acceptor, type); return; } //super: completeRuleCall if (superContainment) super.completeParameterBinding_DataUse(model, assignment, context, acceptor); } @Override public void complete_TOParameterBindingFragment(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { //TODO: what is this //before comma!! context: current element // 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)); // } // } if (model instanceof ParameterBinding) { var pb = ((ParameterBinding) model); var type = pb.getParameter().getDataType(); //TODO: add anything that contains string fields? //start with //TODO: handle containing / indicating value / etc.? completeAssignment(model, context, acceptor, type); } if ((model instanceof DataElementUse)) { //NOTE: adapted for TO if (!context.getPrefix().equals(".")) { completeMemberReferenceForDataUse(model, context, acceptor, " containing { ", " = ? }", " : assign to member"); } else { completeMemberReferenceForDataUse(model, context, acceptor, "", "", " : access member"); } } //super: empty if (superRule) super.complete_ParameterBindingFragment(model, ruleCall, context, acceptor); } @Override public void completeTOCollectionItemFragment_Item(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { completeCollectionDataInstance_Item(model, assignment, context, acceptor); } //TODO: anything specific? @Override public void complete_TOMemberReference(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { complete_MemberReference(model, ruleCall, context, acceptor); } @Override public void completeTOMemberReference_Member(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { // System.out.println(context.getCurrentNode().getText()); // System.out.println(context.getLastCompleteNode().getText()); if (model instanceof DataElementUse) { EList<MemberReference> reduction = ((DataElementUse)model).getReduction(); if (reduction.isEmpty()) { //NOTE: adapted for TO if (!context.getPrefix().equals(".")) { // completeMemberReferenceForDataUse(model, context, acceptor, " containing { ", " = ? }", " : assign to member"); } completeMemberReferenceForDataUse(model, context, acceptor, "", "", " : access member"); return; } else { // ((DataElementUse)model).resolveDataType(); if (reduction.getLast().getMember() == null && reduction.size()>1) { DataType dataType = reduction.get(reduction.size()-2).getMember().getDataType(); completeMemberReferenceForDataUse(dataType, context, acceptor, "", "", " : access member"); } else { completeMemberReferenceForDataUse(model, context, acceptor, "", "", " : access member"); } return; } } //super: lookupCrossReference if (superReference) super.completeMemberReference_Member(model, assignment, context, acceptor); } } No newline at end of file Loading
plugins/org.etsi.mts.tdl.tx.ui/src/org/etsi/mts/tdl/ui/contentassist/TDLtxProposalProvider.java +127 −0 Original line number Diff line number Diff line Loading @@ -831,4 +831,131 @@ public class TDLtxProposalProvider extends AbstractTDLtxProposalProvider { super.completeReceiveMessage_Argument(model, assignment, context, acceptor); } //--------------------------------------------------------------- //TO-specific completions //copied from above -> reuse where no change //TODO: refer to base rules if nothing specific //--------------------------------------------------------------- public void complete_TODataElementUse(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { complete_DataElementUse(model, ruleCall, context, acceptor); } public void completeTODataElementUse_DataElement(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { completeDataElementUse_DataElement(model, assignment, context, acceptor); } @Override public void complete_TOParameterBinding(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { complete_ParameterBinding(model, ruleCall, context, acceptor); } @Override public void completeTOParameterBinding_Parameter(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { completeParameterBinding_Parameter(model, assignment, context, acceptor); } @Override public void completeTOParameterBindingFragment_Argument(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { completeParameterBindingFragment_Argument(model, assignment, context, acceptor); } @Override public void completeTOParameterBinding_DataUse(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { //TODO: relevant? if (model instanceof ParameterBinding) { //adapted for TO! var pb = ((ParameterBinding) model); var type = pb.getParameter().getDataType(); completeAssignment(model, context, acceptor, type); return; } //super: completeRuleCall if (superContainment) super.completeParameterBinding_DataUse(model, assignment, context, acceptor); } @Override public void complete_TOParameterBindingFragment(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { //TODO: what is this //before comma!! context: current element // 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)); // } // } if (model instanceof ParameterBinding) { var pb = ((ParameterBinding) model); var type = pb.getParameter().getDataType(); //TODO: add anything that contains string fields? //start with //TODO: handle containing / indicating value / etc.? completeAssignment(model, context, acceptor, type); } if ((model instanceof DataElementUse)) { //NOTE: adapted for TO if (!context.getPrefix().equals(".")) { completeMemberReferenceForDataUse(model, context, acceptor, " containing { ", " = ? }", " : assign to member"); } else { completeMemberReferenceForDataUse(model, context, acceptor, "", "", " : access member"); } } //super: empty if (superRule) super.complete_ParameterBindingFragment(model, ruleCall, context, acceptor); } @Override public void completeTOCollectionItemFragment_Item(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { completeCollectionDataInstance_Item(model, assignment, context, acceptor); } //TODO: anything specific? @Override public void complete_TOMemberReference(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { complete_MemberReference(model, ruleCall, context, acceptor); } @Override public void completeTOMemberReference_Member(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { // System.out.println(context.getCurrentNode().getText()); // System.out.println(context.getLastCompleteNode().getText()); if (model instanceof DataElementUse) { EList<MemberReference> reduction = ((DataElementUse)model).getReduction(); if (reduction.isEmpty()) { //NOTE: adapted for TO if (!context.getPrefix().equals(".")) { // completeMemberReferenceForDataUse(model, context, acceptor, " containing { ", " = ? }", " : assign to member"); } completeMemberReferenceForDataUse(model, context, acceptor, "", "", " : access member"); return; } else { // ((DataElementUse)model).resolveDataType(); if (reduction.getLast().getMember() == null && reduction.size()>1) { DataType dataType = reduction.get(reduction.size()-2).getMember().getDataType(); completeMemberReferenceForDataUse(dataType, context, acceptor, "", "", " : access member"); } else { completeMemberReferenceForDataUse(model, context, acceptor, "", "", " : access member"); } return; } } //super: lookupCrossReference if (superReference) super.completeMemberReference_Member(model, assignment, context, acceptor); } } No newline at end of file