/*******************************************************************************
* Copyright (c) 2012 BMW Car IT 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
*******************************************************************************/
/*
* generated by Xtext
*/
package org.jnario.feature.ui.labeling;
import static org.eclipse.xtext.util.Strings.convertFromJavaString;
import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.xtend.core.jvmmodel.IXtendJvmAssociations;
import org.eclipse.xtend.ide.labeling.XtendImages;
import org.eclipse.xtend.ide.labeling.XtendLabelProvider;
import org.eclipse.xtext.common.types.JvmIdentifiableElement;
import org.eclipse.xtext.common.types.JvmVisibility;
import org.eclipse.xtext.xbase.ui.labeling.XbaseImageAdornments;
import org.jnario.ExampleTable;
import org.jnario.feature.feature.Background;
import org.jnario.feature.feature.Feature;
import org.jnario.feature.feature.Scenario;
import org.jnario.feature.feature.Step;
import org.jnario.feature.naming.StepNameProvider;
import com.google.inject.Inject;
/**
* @author Birgit Engelmann - Initial contribution and API
*/
public class FeatureLabelProvider extends XtendLabelProvider {
@Inject public FeatureLabelProvider(AdapterFactoryLabelProvider delegate) {
super(delegate);
}
@Inject
private XtendImages images;
@Inject
private StepNameProvider stepNameProvider;
@Inject
private XbaseImageAdornments adornments;
@Inject
private IXtendJvmAssociations associations;
protected ImageDescriptor imageDescriptor(final Object operation) {
if (operation instanceof Background) {
return _imageDescriptor((Background)operation);
}
if (operation instanceof ExampleTable) {
return _imageDescriptor((ExampleTable)operation);
}
if (operation instanceof Step) {
return _imageDescriptor((Step)operation);
}
if (operation instanceof Scenario) {
return _imageDescriptor((Scenario)operation);
}
if (operation instanceof Feature) {
return _imageDescriptor((Feature)operation);
}
return super.imageDescriptor(operation);
}
public ImageDescriptor _imageDescriptor(Background element) {
return images.forClass(JvmVisibility.PUBLIC, adornments.get(associations.getInferredType(element)));
}
public ImageDescriptor _imageDescriptor(ExampleTable element) {
return images.forField(JvmVisibility.PROTECTED, adornments.get((JvmIdentifiableElement) associations.getJvmElements(element).iterator().next()));
}
public ImageDescriptor _imageDescriptor(Step element) {
return images.forOperation(JvmVisibility.PUBLIC, adornments.get(associations.getDirectlyInferredOperation(element)));
}
public ImageDescriptor _imageDescriptor(Scenario element) {
return images.forClass(JvmVisibility.PUBLIC, adornments.get(associations.getInferredType(element)));
}
public ImageDescriptor _imageDescriptor(Feature element) {
return images.forClass(JvmVisibility.PUBLIC, adornments.get(associations.getInferredType(element)));
}
public String text(Background element) {
return element.getName().trim();
}
public String text(Step element) {
return convertFromJavaString(stepNameProvider.describe(element), true);
}
public String text(Scenario element) {
return element.getName().trim();
}
public String text(Feature element) {
return "Feature: " + element.getName().trim();
}
}