/**
* Copyright (c) 2012 Eclipse contributors 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
*/
package org.eclipse.emf.ecore.xcore.ui.hover;
import static org.eclipse.xtext.xbase.ui.hover.HoverLinkHelper.createLinkWithLabel;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.xtext.common.types.TypesPackage;
import org.eclipse.xtext.ui.editor.hover.html.XtextElementLinks;
import org.eclipse.xtext.xbase.ui.hover.XbaseDeclarativeHoverSignatureProvider;
import org.eclipse.xtext.xbase.ui.hover.XbaseHoverDocumentationProvider;
import com.google.inject.Inject;
public class XcoreHoverDocumentationProvider extends XbaseHoverDocumentationProvider
{
@Inject
private XbaseDeclarativeHoverSignatureProvider hoverSignatureProvider;
@Override
protected String getDerivedElementInformation(EObject eObject)
{
StringBuffer buf = new StringBuffer();
List<EObject> jvmElements = getFilteredDerivedElements(eObject, TypesPackage.Literals.JVM_IDENTIFIABLE_ELEMENT);
if (jvmElements.size() > 0)
{
buf.append("<dt>Generated Java Artifacts:</dt>");
for (EObject jvmElement : jvmElements)
{
buf.append("<dd>");
buf.append(computeLinkToElement(jvmElement));
buf.append("</dd>");
}
}
return buf.toString();
}
private String computeLinkToElement(EObject jvmElement)
{
String imageURL = hoverSignatureProvider.getImageTag(jvmElement);
String signature = hoverSignatureProvider.getDerivedOrSourceSignature(jvmElement);
return imageURL + createLinkWithLabel(XtextElementLinks.XTEXTDOC_SCHEME, EcoreUtil.getURI(jvmElement), signature);
}
}