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