/*******************************************************************************
* This file is part of the Symfony eclipse plugin.
*
* (c) Robert Gruendler <r.gruendler@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
******************************************************************************/
package com.dubture.symfony.ui.contentassist;
import org.eclipse.dltk.core.CompletionProposal;
import org.eclipse.dltk.core.IModelElement;
import org.eclipse.dltk.core.IScriptProject;
import org.eclipse.dltk.ui.text.completion.ProposalInfo;
import org.eclipse.dltk.ui.text.completion.ScriptCompletionProposalCollector;
import org.eclipse.jface.resource.ImageDescriptor;
import com.dubture.symfony.core.model.Bundle;
import com.dubture.symfony.core.model.Controller;
import com.dubture.symfony.core.model.RouteSource;
import com.dubture.symfony.core.model.Service;
import com.dubture.symfony.core.model.Template;
import com.dubture.symfony.core.model.Translation;
import com.dubture.symfony.ui.SymfonyPluginImages;
public class CompletionProposalProvider {
public static ProposalInfo createScriptCompletionProposal(CompletionProposal proposal, ScriptCompletionProposalCollector collector) {
IScriptProject project = collector.getScriptProject();
IModelElement element = proposal.getModelElement();
if (element == null) {
return null;
}
if (element.getClass() == RouteSource.class) {
return new RouteProposalInfo(project, proposal);
} else if (element.getClass() == Service.class) {
return new ServiceProposalInfo(project, proposal);
} else if (element.getClass() == Bundle.class) {
return new BundleProposalInfo(project, proposal);
} else if (element.getClass() == Controller.class) {
return new ControllerProposalInfo(project, proposal);
} else if (element.getClass() == Template.class) {
return new TemplateProposalInfo(project, proposal);
} else if (element.getClass() == Translation.class) {
return new TranslationProposalInfo(project, proposal);
}
return null;
}
public static ImageDescriptor createTypeImageDescriptor(CompletionProposal proposal) {
IModelElement element = proposal.getModelElement();
if (element.getClass() == RouteSource.class) {
return SymfonyPluginImages.DESC_OBJS_ROUTE;
} else if (element.getClass() == Service.class) {
return SymfonyPluginImages.DESC_OBJS_SERVICE;
} else if (element.getClass() == Bundle.class) {
return SymfonyPluginImages.DESC_OBJS_BUNDLE;
} else if (element.getClass() == Controller.class) {
return SymfonyPluginImages.DESC_OBJS_CONTROLLER;
} else if (element.getClass() == Template.class) {
return SymfonyPluginImages.DESC_OBJS_TEMPLATE;
}
return null;
}
}