/* * generated by Xtext */ package org.eclipse.emf.mwe2.language.ui.outline; import org.eclipse.emf.mwe2.language.mwe2.Assignment; import org.eclipse.emf.mwe2.language.mwe2.Component; import org.eclipse.emf.mwe2.language.mwe2.DeclaredProperty; import org.eclipse.emf.mwe2.language.mwe2.Module; import org.eclipse.emf.mwe2.language.mwe2.Mwe2Package; import org.eclipse.jface.viewers.StyledString; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.RGB; import org.eclipse.xtext.common.types.JvmIdentifiableElement; import org.eclipse.xtext.common.types.JvmOperation; import org.eclipse.xtext.ui.IImageHelper; import org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider; import org.eclipse.xtext.ui.editor.outline.impl.DocumentRootNode; import org.eclipse.xtext.ui.editor.utils.TextStyle; import org.eclipse.xtext.ui.label.StylerFactory; import com.google.inject.Inject; /** * customization of the default outline structure * * @author Jan Koehnlein */ public class Mwe2OutlineTreeProvider extends DefaultOutlineTreeProvider { private static final String COMPONENT_TYPE_SEPARATOR = " : "; @Inject private StylerFactory stylerFactory; @Inject private IImageHelper imageHelper; protected void _createChildren(DocumentRootNode parentNode, Module module) { createEStructuralFeatureNode(parentNode, module, Mwe2Package.Literals.MODULE__IMPORTS, imageHelper.getImage("impc_obj.gif"), "import declarations", false); createEStructuralFeatureNode(parentNode, module, Mwe2Package.Literals.MODULE__DECLARED_PROPERTIES, imageHelper.getImage("settings_obj.gif"), "declared properties", false); if (module.getRoot() != null) createNode(parentNode, module.getRoot()); } protected boolean _isLeaf(Assignment assignment) { return !(assignment.getValue() instanceof Component); } protected boolean _isLeaf(DeclaredProperty property) { return !(property.getDefault() instanceof Component); } protected Image _image(DeclaredProperty prop) { return labelProvider.getImage(prop.getDefault()); } protected Object _text(Assignment assignment) { StyledString styledText = (StyledString) super._text(assignment); if (assignment.getFeature() instanceof JvmOperation) { return appendSimpleName(styledText, ((JvmOperation)assignment.getFeature()).getParameters().get(0)); } return styledText; } protected Object _text(Component component) { StyledString styledText = (StyledString) super._text(component); if (component.getType() != null) { return appendSimpleName(styledText, component.getType()); } return styledText; } protected StyledString appendSimpleName(StyledString styledText, JvmIdentifiableElement element) { String typeName = element.getSimpleName(); return styledText.append(new StyledString(COMPONENT_TYPE_SEPARATOR + typeName, stylerFactory .createXtextStyleAdapterStyler(getTypeTextStyle()))); } protected TextStyle getTypeTextStyle() { TextStyle textStyle = new TextStyle(); textStyle.setColor(new RGB(149, 125, 71)); return textStyle; } }