/**
* Copyright (c) 2011 committers of YAKINDU and others.
* 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:
* committers of YAKINDU - initial API and implementation
*/
package org.yakindu.sct.generator.genmodel.ui.contentassist;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.xtext.Assignment;
import org.eclipse.xtext.EcoreUtil2;
import org.eclipse.xtext.ui.editor.contentassist.ConfigurableCompletionProposal;
import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
import org.yakindu.sct.generator.core.extensions.GeneratorExtensions;
import org.yakindu.sct.generator.core.extensions.IGeneratorDescriptor;
import org.yakindu.sct.generator.genmodel.ui.PathToImageResolver;
import org.yakindu.sct.model.sgen.GeneratorModel;
/**
* @author andreas muelder - Initial contribution and API
*/
public class SGenProposalProvider extends AbstractSGenProposalProvider {
@Override
public void completeGeneratorEntry_ContentType(EObject model,
Assignment assignment, ContentAssistContext context,
ICompletionProposalAcceptor acceptor) {
GeneratorModel generatorModel = EcoreUtil2.getContainerOfType(model,
GeneratorModel.class);
IGeneratorDescriptor descriptor = GeneratorExtensions
.getGeneratorDescriptor(generatorModel.getGeneratorId());
if (descriptor == null)
return;
ICompletionProposal proposal = createCompletionProposal(
descriptor.getContentType(), context);
acceptor.accept(proposal);
}
@Override
public void completeGeneratorModel_GeneratorId(EObject model,
Assignment assignment, ContentAssistContext context,
ICompletionProposalAcceptor acceptor) {
Iterable<IGeneratorDescriptor> descriptions = GeneratorExtensions
.getGeneratorDescriptors();
for (IGeneratorDescriptor desc : descriptions) {
ICompletionProposal proposal = createCompletionProposal(
desc.getId(),
new StyledString((desc.getName() != null) ? desc.getName()
: "null"), PathToImageResolver.toImage(desc.getImagePath()), context);
if (proposal instanceof ConfigurableCompletionProposal) {
ConfigurableCompletionProposal configurable = (ConfigurableCompletionProposal) proposal;
configurable.setAdditionalProposalInfo(desc.getDescription());
}
acceptor.accept(proposal);
}
}
@Override
public void completeFeatureConfiguration_ParameterValues(EObject model,
Assignment assignment, ContentAssistContext context,
ICompletionProposalAcceptor acceptor) {
super.completeFeatureConfiguration_ParameterValues(model, assignment,
context, acceptor);
}
}