package org.eclipselabs.spray.xtext.ui.labeling; import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; import org.eclipse.xtext.nodemodel.ICompositeNode; import org.eclipse.xtext.nodemodel.INode; import org.eclipse.xtext.nodemodel.util.NodeModelUtils; import org.eclipse.xtext.ui.label.DefaultEObjectLabelProvider; import org.eclipselabs.spray.mm.spray.Connection; import org.eclipselabs.spray.mm.spray.Container; import org.eclipselabs.spray.mm.spray.Diagram; import org.eclipselabs.spray.mm.spray.Import; import org.eclipselabs.spray.mm.spray.Line; import org.eclipselabs.spray.mm.spray.MetaAttribute; import org.eclipselabs.spray.mm.spray.MetaClass; import org.eclipselabs.spray.mm.spray.MetaReference; import org.eclipselabs.spray.mm.spray.StandardBehaviour; import org.eclipselabs.spray.mm.spray.Text; import org.eclipselabs.spray.mm.spray.extensions.SprayExtensions; import org.eclipselabs.spray.xtext.services.SprayGrammarAccess; import com.google.inject.Inject; /** * Provides labels for a EObjects. * see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#labelProvider */ public class SprayLabelProvider extends DefaultEObjectLabelProvider { @Inject private SprayExtensions sprayExtensions; @Inject private SprayGrammarAccess grammar; @Inject public SprayLabelProvider(AdapterFactoryLabelProvider delegate) { super(delegate); } public String text(Connection element) { return String.format(" %s -> %s", element.getFrom().getName(), element.getTo().getName()); } public String image(Connection element) { return "connection16.gif"; } public String text(Container element) { return ""; } public String image(Diagram element) { return "Diagram.gif"; } public String image(Import element) { return "Import.gif"; } public String text(Line element) { return ""; } public String image(Line element) { return "Line.png"; } public String image(MetaAttribute element) { return "EAttribute.gif"; } public String text(MetaClass element) { if (element.getAlias() != null) { return String.format("%s (%s)", element.getType().getName(), element.getAlias()); } else { return element.getType() != null ? element.getType().getName() : ""; } } public String image(MetaClass element) { return "EClass.gif"; } public String text(MetaReference element) { return String.format("%s/%s::%s", element.getReference().getName(), element.getReference().getEReferenceType().getName(), sprayExtensions.getLabelPropertyName(element)); } public String image(MetaReference element) { return "EReference.gif"; } public String text(StandardBehaviour element) { if (element.getPaletteCompartment() != null) { return element.getPaletteCompartment(); } else if (element.getLabel() != null) { return element.getLabel(); } else { return null; } } public String image(StandardBehaviour element) { if (element.getPaletteCompartment() != null) { return "Palette.gif"; } else { return null; } } public String text(Text element) { StringBuilder b = new StringBuilder(); ICompositeNode node = NodeModelUtils.getNode(element); for (INode child : node.getChildren()) { if (child.getGrammarElement() == grammar.getTextAccess().getValueXExpressionParserRuleCall_3_0()) { b.append(child.getText()); } } return b.toString().trim(); } public String image(Text element) { return "Text.gif"; } }