blob: e5100cc2003c3e664fa099e5a54abd6bcdc33c42 [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
*
* Contributors:
* Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
*
*
* This copyright notice shows up in the generated Java code
*/
package org.eclipse.osbp.xtext.menu.ui.contentassist;
import com.google.common.base.Objects;
import com.google.inject.Inject;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper;
import org.eclipse.osbp.xtext.menu.MenuEntry;
import org.eclipse.osbp.xtext.menu.ui.MenuDSLDocumentationTranslator;
import org.eclipse.osbp.xtext.menu.ui.contentassist.AbstractMenuDslProposalProvider;
import org.eclipse.osbp.xtext.menu.ui.contentassist.ImageFileNameTextApplier;
import org.eclipse.xtext.AbstractElement;
import org.eclipse.xtext.Assignment;
import org.eclipse.xtext.Keyword;
import org.eclipse.xtext.RuleCall;
import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider;
import org.eclipse.xtext.ui.editor.contentassist.ConfigurableCompletionProposal;
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 MenuDslProposalProvider extends AbstractMenuDslProposalProvider {
private String imageSelectionPrompt = "Select image file...";
@Inject
private TerminalsProposalProvider provider;
@Inject
private BasicDSLProposalProviderHelper providerHelper;
@Override
protected StyledString getKeywordDisplayString(final Keyword keyword) {
return BasicDSLProposalProviderHelper.getKeywordDisplayString(keyword, MenuDSLDocumentationTranslator.instance());
}
/**
* This override will enable 1 length non letter characters as keyword.
*/
@Override
protected boolean isKeywordWorthyToPropose(final Keyword keyword) {
return true;
}
@Override
public void completeMenuEntry_Icon(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
this.imageFilePickerProposal(model, assignment, context, acceptor, ".png");
}
@Override
public void completeMenuPackage_CollapsedImage(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
this.imageFilePickerProposal(model, assignment, context, acceptor, ".png");
}
@Override
public void completeMenuPackage_ExpandedImage(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
this.imageFilePickerProposal(model, assignment, context, acceptor, ".png");
}
public void imageFilePickerProposal(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor, final String fileExtensions) {
ICompletionProposal _createCompletionProposal = this.createCompletionProposal(this.imageSelectionPrompt, context);
ConfigurableCompletionProposal fileName = ((ConfigurableCompletionProposal) _createCompletionProposal);
boolean _notEquals = (!Objects.equal(fileName, null));
if (_notEquals) {
ImageFileNameTextApplier applier = new ImageFileNameTextApplier();
applier.setExtensions(fileExtensions.split(","));
applier.setContext(context);
fileName.setTextApplier(applier);
}
acceptor.accept(fileName);
}
/**
* This method decides which proposals will be valid.
*/
@Override
protected boolean isValidProposal(final String proposal, final String prefix, final ContentAssistContext context) {
boolean result = super.isValidProposal(proposal, prefix, context);
EObject _currentModel = context.getCurrentModel();
if ((_currentModel instanceof MenuEntry)) {
return this.isEntryValidProposal(context, proposal, result);
}
return result;
}
public boolean isEntryValidProposal(final ContentAssistContext context, final String proposal, final boolean result) {
boolean _isGrammarToken = this.isGrammarToken(proposal);
if (_isGrammarToken) {
return true;
}
return true;
}
public boolean isGrammarToken(final String proposal) {
boolean _equals = this.imageSelectionPrompt.equals(proposal);
if (_equals) {
return true;
}
boolean _equals_1 = "dialog".equals(proposal);
if (_equals_1) {
return true;
}
boolean _equals_2 = "image".equals(proposal);
if (_equals_2) {
return true;
}
boolean _equals_3 = "table".equals(proposal);
if (_equals_3) {
return true;
}
boolean _equals_4 = "perspective".equals(proposal);
if (_equals_4) {
return true;
}
boolean _equals_5 = "process".equals(proposal);
if (_equals_5) {
return true;
}
boolean _equals_6 = "showBadge".equals(proposal);
if (_equals_6) {
return true;
}
boolean _equals_7 = "described by".equals(proposal);
if (_equals_7) {
return true;
}
boolean _equals_8 = "entry".equals(proposal);
if (_equals_8) {
return true;
}
boolean _equals_9 = "expandedImage".equals(proposal);
if (_equals_9) {
return true;
}
boolean _equals_10 = "collapsedImage".equals(proposal);
if (_equals_10) {
return true;
}
boolean _equals_11 = "width".equals(proposal);
if (_equals_11) {
return true;
}
return false;
}
@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_TRANSLATABLEID(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
this.provider.complete_ID(model, ruleCall, context, acceptor);
}
@Override
public void completeMenuPackage_Width(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
AbstractElement _terminal = assignment.getTerminal();
this.provider.complete_STRING(model, ((RuleCall) _terminal), context, acceptor);
}
}