blob: e76082b0173c2bacaa0ce5ebe74c439cdc62ddb3 [file] [log] [blame]
/**
* Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* ============================================================================
* Initial contribution:
* Loetz GmbH & Co. KG
*
* generated by xtext
*/
package org.eclipse.osbp.xtext.dialogdsl.ui.contentassist;
import com.google.inject.Inject;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper;
import org.eclipse.osbp.xtext.dialogdsl.ui.DialogDSLDocumentationTranslator;
import org.eclipse.osbp.xtext.dialogdsl.ui.contentassist.AbstractDialogDslProposalProvider;
import org.eclipse.xtext.Keyword;
import org.eclipse.xtext.RuleCall;
import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider;
import org.eclipse.xtext.nodemodel.INode;
import org.eclipse.xtext.nodemodel.impl.AbstractNode;
import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
/**
* see http://www.eclipse.org/Xtext/documentation.html#contentAssist on how to customize content assistant
*/
@SuppressWarnings("all")
public class DialogDslProposalProvider extends AbstractDialogDslProposalProvider {
@Inject
private TerminalsProposalProvider provider;
@Inject
private BasicDSLProposalProviderHelper providerHelper;
@Override
protected StyledString getKeywordDisplayString(final Keyword keyword) {
return BasicDSLProposalProviderHelper.getKeywordDisplayString(keyword,
DialogDSLDocumentationTranslator.instance());
}
/**
* This override will enable 1 length non letter characters as keyword.
*/
@Override
protected boolean isKeywordWorthyToPropose(final Keyword keyword) {
return true;
}
@Override
protected boolean isValidProposal(final String proposal, final String prefix, final ContentAssistContext context) {
boolean result = super.isValidProposal(proposal, prefix, context);
boolean _existsConflict = this.existsConflict(result, proposal, context);
boolean _not = (!_existsConflict);
result = _not;
return result;
}
@Override
public void complete_QualifiedName(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
this.providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this);
}
@Override
public void complete_TRANSLATABLESTRING(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
this.provider.complete_STRING(model, ruleCall, context, acceptor);
}
@Override
public void complete_ID(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
this.provider.complete_ID(model, ruleCall, context, acceptor);
}
@Override
public void complete_TRANSLATABLEID(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
this.provider.complete_ID(model, ruleCall, context, acceptor);
}
private boolean existsConflict(final boolean isValidProposal, final String proposal, final ContentAssistContext context) {
boolean _xblockexpression = false;
{
boolean _equals = "toolbar".equals(proposal);
if (_equals) {
INode lastCompleteNode = context.getLastCompleteNode();
if ((lastCompleteNode instanceof AbstractNode)) {
lastCompleteNode = ((AbstractNode) lastCompleteNode);
EObject grammarElement = lastCompleteNode.getGrammarElement();
if ((grammarElement instanceof Keyword)) {
String lastCompleteNodeValue = ((Keyword) grammarElement).getValue();
boolean _equals_1 = "embedded".equals(lastCompleteNodeValue);
if (_equals_1) {
return true;
}
}
}
}
_xblockexpression = (!isValidProposal);
}
return _xblockexpression;
}
}