/*******************************************************************************
* Copyright (c) 2013 AKSW Xturtle Project, itemis AG (http://www.itemis.eu).
* 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 de.itemis.tooling.xturtle.ui.hover;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.naming.QualifiedName;
import org.eclipse.xtext.resource.IEObjectDescription;
import org.eclipse.xtext.resource.IResourceDescriptions;
import org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider;
import org.eclipse.xtext.ui.editor.hover.html.DefaultEObjectHoverProvider;
import com.google.inject.Inject;
import de.itemis.tooling.xturtle.resource.TurtleResourceService;
import de.itemis.tooling.xturtle.xturtle.XturtlePackage;
public class TurtleEObjectHoverProvider extends DefaultEObjectHoverProvider {
@Inject
TurtleResourceService service;
@Inject
ResourceDescriptionsProvider indexService;
@Override
protected String getFirstLine(EObject o) {
String uri = service.getUriString(o);
if(uri!=null){
return "<b>"+uri+"</b>";
}
return "";
}
@Override
protected String getDocumentation(EObject o) {
QualifiedName qName = service.getQualifiedName(o);
TurtleHoverInfoCollector collector=new TurtleHoverInfoCollector();
if(qName!=null){
IResourceDescriptions index = indexService.getResourceDescriptions(o.eResource());
Iterable<IEObjectDescription> matches = index.getExportedObjects(XturtlePackage.Literals.RESOURCE, qName, false);
for (IEObjectDescription match : matches) {
String desc = match.getUserData("descr");
collector.addDescriptionUserData(desc);
}
}
return collector.getAsHtml();
}
@Override
protected boolean hasHover(EObject o) {
return service.getUriString(o)!=null;
}
}