コード例 #1
0
 /**
  * Provides custom completion for a path, taking into account the path which has already been
  * specified
  *
  * @see
  *     org.eclipse.papyrus.uml.textedit.property.xtext.ui.contentassist.AbstractUmlPropertyProposalProvider#completeQualifiedName_Remaining(org.eclipse.emf.ecore.EObject,
  *     org.eclipse.xtext.Assignment,
  *     org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext,
  *     org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor)
  */
 @Override
 public void completeQualifiedName_Remaining(
     EObject model,
     Assignment assignment,
     ContentAssistContext context,
     ICompletionProposalAcceptor acceptor) {
   QualifiedName path = (QualifiedName) model;
   for (NamedElement n : path.getPath().getOwnedMembers()) {
     if (n instanceof Package) {
       if (n.getName().toLowerCase().contains(context.getPrefix().toLowerCase())) {
         String completionString = n.getName() + "::";
         String displayString = n.getName() + "::";
         CustomCompletionProposal completionProposal =
             CompletionProposalUtils.createCompletionProposalWithReplacementOfPrefix(
                 n, completionString, displayString, context);
         acceptor.accept(completionProposal);
       }
     }
   }
   for (Package p : path.getPath().getImportedPackages()) {
     if (p.getName().toLowerCase().contains(context.getPrefix().toLowerCase())) {
       String completionString = p.getName() + "::";
       String displayString = p.getName() + "::";
       CustomCompletionProposal completionProposal =
           CompletionProposalUtils.createCompletionProposalWithReplacementOfPrefix(
               p, completionString, displayString, context);
       acceptor.accept(completionProposal);
     }
   }
 }
コード例 #2
0
 public void verify(ContentAssistContext contentAssistContext) {
   EObject currentModel = contentAssistContext.getCurrentModel();
   assertEquals(currentModel.toString(), expectedClass, currentModel.eClass());
   if (expectedClassName != null) {
     assertTrue(
         contentAssistContext.getCurrentModel()
             instanceof org.eclipse.xtext.ui.tests.editor.contentassist.domainModelTest.Class);
     assertEquals(
         expectedClassName,
         ((org.eclipse.xtext.ui.tests.editor.contentassist.domainModelTest.Class)
                 contentAssistContext.getCurrentModel())
             .getName());
   }
 }
コード例 #3
0
 @Override
 public void completeMobaGeneratorIDFeature_GeneratorId(
     final EObject model,
     final Assignment assignment,
     final ContentAssistContext context,
     final ICompletionProposalAcceptor acceptor) {
   super.completeMobaGeneratorIDFeature_GeneratorId(model, assignment, context, acceptor);
   final String prefix = context.getPrefix();
   final Map<String, ExtensionGeneratorDelegate.Metadata> allGenerators =
       this.generatorDelegate.readExtentionsMetadataById(this.grammarName, prefix);
   Collection<ExtensionGeneratorDelegate.Metadata> _values = allGenerators.values();
   final Consumer<ExtensionGeneratorDelegate.Metadata> _function =
       (ExtensionGeneratorDelegate.Metadata it) -> {
         StringConcatenation _builder = new StringConcatenation();
         String _id = it.getId();
         String _version = it.getVersion();
         String _versionedIdWithWhitespace = MobaUtil.toVersionedIdWithWhitespace(_id, _version);
         _builder.append(_versionedIdWithWhitespace, "");
         StyledString _createStyledString = this.createStyledString(it);
         Image _image = this.getImage(model);
         ConfigurableCompletionProposal _doCreateProposal =
             this.doCreateProposal(
                 _builder.toString(), _createStyledString, _image, 1000, context);
         acceptor.accept(_doCreateProposal);
       };
   _values.forEach(_function);
 }
コード例 #4
0
  /**
   * Provides custom completion for specifying the type of a property, taking into account the path
   * if the name is qualified
   *
   * @see
   *     org.eclipse.papyrus.uml.textedit.property.xtext.ui.contentassist.AbstractUmlPropertyProposalProvider#completeTypeRule_Type(org.eclipse.emf.ecore.EObject,
   *     org.eclipse.xtext.Assignment,
   *     org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext,
   *     org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor)
   */
  @Override
  public void completeTypeRule_Type(
      EObject model,
      Assignment assignment,
      ContentAssistContext context,
      ICompletionProposalAcceptor acceptor) {

    Namespace namespace =
        ((Property) ContextElementUtil.getContextElement(model.eResource())).getNamespace();
    if (model instanceof TypeRule) {
      TypeRule typeRule = (TypeRule) model;
      QualifiedName path = typeRule.getPath();
      while (path.getRemaining() != null) {
        path = path.getRemaining();
      }
      namespace = path.getPath();
    } else if (!(model instanceof PortRule)) {
      return;
    }
    for (NamedElement n : namespace.getOwnedMembers()) {
      if (n instanceof Classifier) {
        if (n.getName().toLowerCase().contains(context.getPrefix().toLowerCase())) {
          String completionString = n.getName();
          String displayString = n.getName();
          CustomCompletionProposal completionProposal =
              CompletionProposalUtils.createCompletionProposalWithReplacementOfPrefix(
                  n, completionString, displayString, context);
          acceptor.accept(completionProposal);
        }
      }
    }
  }
コード例 #5
0
 /**
  * Provides custom completion for keywords, in the context of "modifiers" specification
  *
  * @see
  *     org.eclipse.xtext.ui.editor.contentassist.AbstractJavaBasedContentProposalProvider#completeKeyword(org.eclipse.xtext.Keyword,
  *     org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext,
  *     org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor)
  */
 @Override
 public void completeKeyword(
     Keyword keyword,
     ContentAssistContext contentAssistContext,
     ICompletionProposalAcceptor acceptor) {
   EObject model = contentAssistContext.getCurrentModel();
   if (!(model instanceof ModifiersRule)) {
     super.completeKeyword(keyword, contentAssistContext, acceptor);
     return;
   }
   ModifiersRule modifiersRule = (ModifiersRule) model;
   boolean isOrdered = false;
   boolean isReadOnly = true;
   boolean isUnion = false;
   boolean isUnique = false;
   for (ModifierSpecification spec : modifiersRule.getValues()) {
     if (spec.getValue() != null) {
       switch (spec.getValue()) {
         case ORDERED:
           isOrdered = true;
           break;
         case READ_ONLY:
           isReadOnly = !isReadOnly;
           break;
         case UNION:
           isUnion = true;
           break;
         case UNIQUE:
           isUnique = true;
           break;
         default:
           break;
       }
     }
   }
   String value = keyword.getValue();
   if (value.equals("ordered")) {
     if (!isOrdered) {
       super.completeKeyword(keyword, contentAssistContext, acceptor);
     }
   } else if (value.equals("readOnly")) {
     if (!isReadOnly) {
       super.completeKeyword(keyword, contentAssistContext, acceptor);
     }
   } else if (value.equals("unique")) {
     if (!isUnique) {
       super.completeKeyword(keyword, contentAssistContext, acceptor);
     }
   } else if (value.equals("union")) {
     if (!isUnion) {
       super.completeKeyword(keyword, contentAssistContext, acceptor);
     }
   } else {
     super.completeKeyword(keyword, contentAssistContext, acceptor);
   }
 }
コード例 #6
0
  private void completeSnippet(
      KeywordProposal proposal,
      ContentAssistContext context,
      ICompletionProposalAcceptor acceptor) {
    XtextTemplateContext templateContext =
        new IndentTemplateContext(
            templateContextType,
            context.getDocument(),
            new Position(
                context.getReplaceRegion().getOffset(), context.getReplaceRegion().getLength()),
            context,
            getScopeProvider());

    Template template =
        new Template(proposal.keyword, proposal.description, "", proposal.pattern, true);
    acceptor.accept(
        new IndentTemplateProposal(
            template, templateContext, context.getReplaceRegion(), proposal.image, 1000));
  }
コード例 #7
0
 @Override
 public void complete_ValidCommand(
     EObject model,
     RuleCall ruleCall,
     ContentAssistContext context,
     ICompletionProposalAcceptor acceptor) {
   super.complete_ValidState(model, ruleCall, context, acceptor);
   for (Command command : stateAndCommandProvider.getAllCommands()) {
     if (command.toString().startsWith(context.getPrefix())) {
       acceptor.accept(createCompletionProposal(command.toString(), context));
     }
   }
 }
コード例 #8
0
 public void apply(IDocument document, char trigger, int offset) {
   try {
     int length = 0;
     if (offset != fReplacementOffset) {
       length = offset - fReplacementOffset;
     } else {
       length = fContentAssistContext.getSelectedText().length();
     }
     document.replace(fReplacementOffset, length, fReplacementString);
   } catch (BadLocationException e) {
     // ignore
   }
 }
コード例 #9
0
  @Override
  public void complete_MultiplicityRule(
      EObject model,
      RuleCall ruleCall,
      ContentAssistContext context,
      ICompletionProposalAcceptor acceptor) {
    String zero_one = "[0..1]";
    String one = "[1]";
    String one_star = "[1..*]";
    String star = "[*]";

    String completionString = "";
    String displayString = "";
    ICompletionProposal completionProposal = null;

    completionString = "" + zero_one.substring(context.getPrefix().length());
    displayString = "" + zero_one;
    completionProposal =
        CompletionProposalUtils.createCompletionProposal(completionString, displayString, context);
    acceptor.accept(completionProposal);

    completionString = "" + one.substring(context.getPrefix().length());
    displayString = "" + one;
    completionProposal =
        CompletionProposalUtils.createCompletionProposal(completionString, displayString, context);
    acceptor.accept(completionProposal);

    completionString = "" + one_star.substring(context.getPrefix().length());
    displayString = "" + one_star + "     ";
    completionProposal =
        CompletionProposalUtils.createCompletionProposal(completionString, displayString, context);
    acceptor.accept(completionProposal);

    completionString = "" + star.substring(context.getPrefix().length());
    displayString = "" + star;
    completionProposal =
        CompletionProposalUtils.createCompletionProposal(completionString, displayString, context);
    acceptor.accept(completionProposal);
  }
コード例 #10
0
 protected void createProposal(
     EObject model, ContentAssistContext context, ICompletionProposalAcceptor acceptor, Tag tag) {
   String prefix = context.getPrefix();
   if (prefix.trim().startsWith("-") && !prefix.contains("@" + tag.getName())) {
     acceptor.accept(
         createCompletionProposal(
             prefix + tag,
             getStyledDisplayString(model, tag.getName(), tag.getName()),
             getLabelProvider().getImage(tag),
             0,
             "",
             context));
   }
 }
コード例 #11
0
  @Override
  public void complete_ItemName(
      EObject model,
      RuleCall ruleCall,
      ContentAssistContext context,
      ICompletionProposalAcceptor acceptor) {
    super.complete_ItemName(model, ruleCall, context, acceptor);
    ItemRegistry itemRegistry = RuleModelUIActivator.itemRegistryTracker.getService();

    for (Item item : itemRegistry.getItems()) {
      if (item.getName().startsWith(context.getPrefix())) {
        acceptor.accept(createCompletionProposal(item.getName(), context));
      }
    }
  }
コード例 #12
0
 @Override
 public void completeSubsetsRule_Port(
     EObject model,
     Assignment assignment,
     ContentAssistContext context,
     ICompletionProposalAcceptor acceptor) {
   for (Property inherited : UmlPortScopeProvider.retrieveInheritedProperties(model)) {
     if (inherited.getName().toLowerCase().contains(context.getPrefix().toLowerCase())) {
       String completionString = inherited.getName();
       String displayString = PropertyUtil.getLabel(inherited);
       CustomCompletionProposal completionProposal =
           CompletionProposalUtils.createCompletionProposalWithReplacementOfPrefix(
               inherited, completionString, displayString, context);
       acceptor.accept(completionProposal);
     }
   }
 }
コード例 #13
0
 @Override
 public void completeScript_Expressions(
     EObject model,
     Assignment assignment,
     ContentAssistContext context,
     ICompletionProposalAcceptor acceptor) {
   super.completeScript_Expressions(model, assignment, context, acceptor);
   if (model == null || model instanceof Rule) {
     Function<IEObjectDescription, ICompletionProposal> proposalFactory =
         getProposalFactory(getFeatureCallRuleName(), context);
     IScope scope =
         getScopeProvider()
             .createSimpleFeatureCallScope(
                 model,
                 XbasePackage.Literals.XABSTRACT_FEATURE_CALL__FEATURE,
                 context.getResource(),
                 false,
                 -1);
     createLocalVariableAndImplicitProposals(model, context, acceptor);
   }
 }
コード例 #14
0
  @Override
  public void complete_HEX(
      EObject model,
      RuleCall ruleCall,
      ContentAssistContext context,
      ICompletionProposalAcceptor acceptor) {
    ICompletionProposalAcceptor priorityOptimizer = getCustomAcceptor(model, "integer", acceptor);

    String proposalText = "0x1";
    ICompletionProposal proposal =
        createCompletionProposal(
            proposalText, proposalText + " - " + ruleCall.getRule().getName(), null, context);

    if (proposal instanceof ConfigurableCompletionProposal) {
      ConfigurableCompletionProposal configurable = (ConfigurableCompletionProposal) proposal;
      configurable.setSelectionStart(configurable.getReplacementOffset() + 2);
      configurable.setSelectionLength(proposalText.length() - 2);
      configurable.setAutoInsertable(false);
      configurable.setSimpleLinkedMode(context.getViewer(), '\t', ' ');
    }

    priorityOptimizer.accept(proposal);
  }
コード例 #15
0
  /**
   * Provides custom completion for the root element in a qualified name
   *
   * @see
   *     org.eclipse.papyrus.uml.textedit.property.xtext.ui.contentassist.AbstractUmlPropertyProposalProvider#completeTypeRule_Path(org.eclipse.emf.ecore.EObject,
   *     org.eclipse.xtext.Assignment,
   *     org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext,
   *     org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor)
   */
  @Override
  public void completeTypeRule_Path(
      EObject model,
      Assignment assignment,
      ContentAssistContext context,
      ICompletionProposalAcceptor acceptor) {
    Namespace root =
        (Namespace)
            EcoreUtil.getRootContainer(ContextElementUtil.getContextElement(model.eResource()));

    if (root == null) {
      return;
    }

    // first accept the root Model
    String completionString = root.getName() + "::";
    String displayString = root.getName() + "::";
    // String displayString = c.getName() ;
    CustomCompletionProposal completionProposal =
        CompletionProposalUtils.createCompletionProposalWithReplacementOfPrefix(
            root, completionString, displayString, context);
    acceptor.accept(completionProposal);

    // then accepts all packages imported by Model
    List<Package> importedPackages = root.getImportedPackages();
    for (Package p : importedPackages) {
      if (p.getName().toLowerCase().contains(context.getPrefix().toLowerCase())) {
        completionString = p.getName() + "::";
        displayString = p.getName() + "::";
        // String displayString = c.getName() ;
        completionProposal =
            CompletionProposalUtils.createCompletionProposalWithReplacementOfPrefix(
                root, completionString, displayString, context);
        acceptor.accept(completionProposal);
      }
    }
  }
コード例 #16
0
 @Override
 public void completeMobaGeneratorIDFeature_GeneratorVersion(
     final EObject model,
     final Assignment assignment,
     final ContentAssistContext context,
     final ICompletionProposalAcceptor acceptor) {
   super.completeMobaGeneratorIDFeature_GeneratorId(model, assignment, context, acceptor);
   final String prefix = context.getPrefix();
   final MobaGeneratorIDFeature feature = ((MobaGeneratorIDFeature) model);
   String _id = feature.getId();
   final Map<String, ExtensionGeneratorDelegate.Metadata> allGenerators =
       this.generatorDelegate.readExtentionsMetadataByVersion(this.grammarName, _id, prefix);
   Collection<ExtensionGeneratorDelegate.Metadata> _values = allGenerators.values();
   final Consumer<ExtensionGeneratorDelegate.Metadata> _function =
       (ExtensionGeneratorDelegate.Metadata it) -> {
         String _version = it.getVersion();
         StyledString _createStyledStringForVersion = this.createStyledStringForVersion(it);
         Image _image = this.getImage(model);
         ConfigurableCompletionProposal _doCreateProposal =
             this.doCreateProposal(_version, _createStyledStringForVersion, _image, 1000, context);
         acceptor.accept(_doCreateProposal);
       };
   _values.forEach(_function);
 }
コード例 #17
0
 /**
  * Provides custom completion for the specifying the type of a property
  *
  * @see
  *     org.eclipse.papyrus.uml.textedit.property.xtext.ui.contentassist.AbstractUmlPropertyProposalProvider#completePropertyRule_Type(org.eclipse.emf.ecore.EObject,
  *     org.eclipse.xtext.Assignment,
  *     org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext,
  *     org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor)
  */
 @Override
 public void completePortRule_Type(
     EObject model,
     Assignment assignment,
     ContentAssistContext context,
     ICompletionProposalAcceptor acceptor) {
   List<Classifier> allClassifiers = new ArrayList<Classifier>();
   Namespace namespace =
       (Namespace)
           EcoreUtil.getRootContainer(ContextElementUtil.getContextElement(model.eResource()));
   allClassifiers.addAll(getRecursivelyOwnedClassifiers(namespace));
   allClassifiers.addAll(getRecursivelyImportedClassifiers(namespace));
   for (Classifier c : allClassifiers) {
     if (c.getQualifiedName().toLowerCase().contains(context.getPrefix().toLowerCase())) {
       String displayString = c.getQualifiedName();
       String completionString =
           CompletionProposalUtils.getQualifiedNameLabelWithSufficientDepth(c, namespace);
       ICompletionProposal completionProposal =
           CompletionProposalUtils.createCompletionProposalWithReplacementOfPrefix(
               c, completionString, displayString, context);
       acceptor.accept(completionProposal);
     }
   }
 }
コード例 #18
0
ファイル: JstProposalProvider.java プロジェクト: nlalevee/jst
 @Override
 public void complete_TEXT(
     EObject model,
     RuleCall ruleCall,
     ContentAssistContext context,
     ICompletionProposalAcceptor acceptor) {
   acceptor.accept(new CompletionProposal("#{  }", context.getOffset(), 0, 3));
   acceptor.accept(new CompletionProposal("#render ()", context.getOffset(), 0, 8));
   acceptor.accept(
       new CompletionProposal(
           "#if()\n    \n#end", context.getOffset(), 0, 4, null, "#if() #end", null, null));
   acceptor.accept(
       new CompletionProposal(
           "#if()\n    \n#else\n    \n#end",
           context.getOffset(),
           0,
           4,
           null,
           "#if() #else #end",
           null,
           null));
   acceptor.accept(
       new CompletionProposal(
           "#if()\n    \n#elseif()\n    \n#else\n    \n#end",
           context.getOffset(),
           0,
           4,
           null,
           "#if() #elseif() #else #end",
           null,
           null));
   acceptor.accept(
       new CompletionProposal(
           "#for()\n    \n#end", context.getOffset(), 0, 5, null, "#for() #end", null, null));
   acceptor.accept(
       new CompletionProposal(
           "#while()\n    \n#end", context.getOffset(), 0, 7, null, "#while() #end", null, null));
   acceptor.accept(
       new CompletionProposal(
           "#do\n    \n#end #while()",
           context.getOffset(),
           0,
           21,
           null,
           "#do #end #while()",
           null,
           null));
   acceptor.accept(new CompletionProposal("$()", context.getOffset(), 0, 2));
   acceptor.accept(new CompletionProposal("$?()", context.getOffset(), 0, 3));
   acceptor.accept(new CompletionProposal("$\\html()", context.getOffset(), 0, 7));
   acceptor.accept(new CompletionProposal("$?\\html()", context.getOffset(), 0, 8));
   acceptor.accept(new CompletionProposal("$\\js()", context.getOffset(), 0, 5));
   acceptor.accept(new CompletionProposal("$?\\js()", context.getOffset(), 0, 6));
   acceptor.accept(new CompletionProposal("$\\xml()", context.getOffset(), 0, 6));
   acceptor.accept(new CompletionProposal("$?\\xml()", context.getOffset(), 0, 7));
   acceptor.accept(new CompletionProposal("$\\java()", context.getOffset(), 0, 7));
   acceptor.accept(new CompletionProposal("$?\\java()", context.getOffset(), 0, 8));
   acceptor.accept(new CompletionProposal("$\\csv()", context.getOffset(), 0, 6));
   acceptor.accept(new CompletionProposal("$?\\csv()", context.getOffset(), 0, 7));
   acceptor.accept(new CompletionProposal("$\\sql()", context.getOffset(), 0, 6));
   acceptor.accept(new CompletionProposal("$?\\sql()", context.getOffset(), 0, 7));
   acceptor.accept(new CompletionProposal("$\\\\()", context.getOffset(), 0, 4));
   acceptor.accept(new CompletionProposal("$?\\\\()", context.getOffset(), 0, 5));
 }
コード例 #19
0
  /**
   * Validates if a keyword should be viewed by the proposal view.
   *
   * <p>Builds dependent on the ContentAssistContext a list with keywords which shouldn't be
   * displayed by the proposal view.
   */
  @Override
  public void completeKeyword(
      Keyword keyword,
      ContentAssistContext contentAssistContext,
      ICompletionProposalAcceptor acceptor) {
    List<Keyword> suppressKeywords = new ArrayList<Keyword>();
    // context Transition
    if (contentAssistContext.getRootModel() instanceof TransitionSpecification) {
      suppressKeywords.addAll(
          getKeywords(grammarAccess.getEntryEventAccess().getGroup().eContents()));
      suppressKeywords.addAll(
          getKeywords(grammarAccess.getExitEventAccess().getGroup().eContents()));
    }
    // context States
    else if (contentAssistContext.getRootModel() instanceof SimpleScope) {
      suppressKeywords.addAll(
          getKeywords(grammarAccess.getVariableDefinitionAccess().getGroup().eContents()));
      suppressKeywords.addAll(
          getKeywords(grammarAccess.getEventDefinitionAccess().getGroup().eContents()));
      // suppressKeywords.addAll(getKeywords(grammarAccess.getExitpointAccess()
      // .getGroup().eContents()));
      // suppressKeywords.addAll(getKeywords(grammarAccess.getEntrypointAccess()
      // .getGroup().eContents()));
      suppressKeywords.addAll(
          getKeywords(grammarAccess.getDirectionAccess().getAlternatives().eContents()));
      suppressKeywords.addAll(
          getKeywords(grammarAccess.getOperationDefinitionAccess().getGroup().eContents()));
    }
    // context Statechart
    else if (contentAssistContext.getRootModel() instanceof StatechartSpecification) {
      suppressKeywords.addAll(
          getKeywords(grammarAccess.getExitEventAccess().getGroup().eContents()));
      suppressKeywords.addAll(
          getKeywords(grammarAccess.getEntryEventAccess().getGroup().eContents()));

      if (!atLeastOnePackageExistsInIndex(getSctResource(contentAssistContext.getRootModel()))) {
        suppressKeywords.addAll(
            getKeywords(grammarAccess.getImportScopeAccess().getGroup().eContents()));
      }
    }

    EObject currentModel = contentAssistContext.getCurrentModel();
    if (currentModel instanceof InterfaceScope) {
      suppressKeywords.addAll(
          getKeywords(grammarAccess.getLocalReactionAccess().getGroup().eContents()));
      suppressKeywords.addAll(
          getKeywords(grammarAccess.getAlwaysEventAccess().getGroup().eContents()));
      // suppressKeywords.addAll(getKeywords(grammarAccess.getOnCycleEventAccess()
      // .getGroup().eContents()));
      suppressKeywords.addAll(
          getKeywords(grammarAccess.getTimeEventTypeAccess().getAlternatives().eContents()));
      suppressKeywords.add(grammarAccess.getDirectionAccess().getLOCALLocalKeyword_0_0());
    }

    if (currentModel instanceof FeatureCall) {
      FeatureCall featureCall = (FeatureCall) currentModel;
      if (!(featureCall.getFeature() instanceof Operation)) {
        suppressKeywords.add(
            grammarAccess.getFeatureCallAccess().getOperationCallLeftParenthesisKeyword_1_3_0_0());
      }
    }
    if (currentModel instanceof ElementReferenceExpression) {
      ElementReferenceExpression referenceExpression = (ElementReferenceExpression) currentModel;
      if (!(referenceExpression.getReference() instanceof Operation)) {
        suppressKeywords.add(
            grammarAccess
                .getElementReferenceExpressionAccess()
                .getOperationCallLeftParenthesisKeyword_2_0_0());
      }
    }
    if (currentModel instanceof InternalScope) {
      suppressKeywords.add(grammarAccess.getDirectionAccess().getINInKeyword_1_0());
      suppressKeywords.add(grammarAccess.getDirectionAccess().getOUTOutKeyword_2_0());
    }

    if (!suppressKeywords.contains(keyword)) {
      super.completeKeyword(keyword, contentAssistContext, new AcceptorDelegate(acceptor));
    }
  }