/** * 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); } } }
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()); } }
@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); }
/** * 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); } } } }
/** * 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); } }
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)); }
@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)); } } }
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 } }
@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); }
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)); } }
@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)); } } }
@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); } } }
@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); } }
@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); }
/** * 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); } } }
@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); }
/** * 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); } } }
@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)); }
/** * 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)); } }