blob: c2c5e3f932201042404c4da34ec023dc8837926b [file] [log] [blame]
/**
* Copyright (c) 2011, 2018 - 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 v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
*
* generated by Xtext 2.11.0
*/
package org.eclipse.osbp.xtext.signal.ui.contentassist;
import com.google.inject.Inject;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper;
import org.eclipse.osbp.xtext.signal.SignalHandler;
import org.eclipse.osbp.xtext.signal.SignalHandlerTypeEnum;
import org.eclipse.osbp.xtext.signal.SignalTypeEnum;
import org.eclipse.osbp.xtext.signal.SignalWatcher;
import org.eclipse.osbp.xtext.signal.ui.contentassist.AbstractSignalDSLProposalProvider;
import org.eclipse.osbp.xtext.signal.ui.contentassist.DirectoryNameTextApplier;
import org.eclipse.xtext.Assignment;
import org.eclipse.xtext.EcoreUtil2;
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 https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#content-assist
* on how to customize the content assistant.
*/
@SuppressWarnings("all")
public class SignalDSLProposalProvider extends AbstractSignalDSLProposalProvider {
@Inject
private TerminalsProposalProvider provider;
@Inject
private BasicDSLProposalProviderHelper providerHelper;
@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 completeSignalWatcher_Directory(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
this.directoryPickerProposal(model, context, acceptor);
}
public void directoryPickerProposal(final EObject model, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
ICompletionProposal _createCompletionProposal = this.createCompletionProposal("Select directory...", context);
ConfigurableCompletionProposal dirName = ((ConfigurableCompletionProposal) _createCompletionProposal);
if ((dirName != null)) {
DirectoryNameTextApplier applier = new DirectoryNameTextApplier();
applier.setContext(context);
dirName.setTextApplier(applier);
}
acceptor.accept(dirName);
}
/**
* This method decided 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 SignalHandler)) {
EObject _currentModel_1 = context.getCurrentModel();
result = this.isValidProposalSignalHandlerType(proposal, prefix, ((SignalHandler) _currentModel_1), result);
}
return result;
}
private boolean isValidProposalSignalHandlerType(final String proposal, final String prefix, final SignalHandler handler, final boolean result) {
if ((handler != null)) {
final EObject watcher = EcoreUtil2.resolve(handler.eContainer(), handler.eResource());
if (((watcher != null) && (watcher instanceof SignalWatcher))) {
SignalTypeEnum _signal = ((SignalWatcher) watcher).getSignal();
if (_signal != null) {
switch (_signal) {
case ALL:
return true;
case CREATESIGNALS:
return SignalHandlerTypeEnum.DOAFTERCREATE.getLiteral().equals(proposal);
case DELETESIGNALS:
return SignalHandlerTypeEnum.DOAFTERDELETE.getLiteral().equals(proposal);
case MODIFYSIGNALS:
return SignalHandlerTypeEnum.DOAFTERMODIFY.getLiteral().equals(proposal);
default:
return false;
}
} else {
return false;
}
}
}
return result;
}
@Override
public void complete_INT(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
this.provider.complete_INT(model, ruleCall, context, acceptor);
}
@Override
public void complete_STRING(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
this.provider.complete_STRING(model, ruleCall, context, acceptor);
}
}