Commit 8c764769 authored by Philip Makedonski's avatar Philip Makedonski
Browse files

+ added initial support for more sophisticated hover information

parent 27272ee8
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -4,6 +4,8 @@
package org.etsi.mts.tdl.ui;

import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.eclipse.xtext.ui.editor.hover.IEObjectHoverProvider;
import org.etsi.mts.tdl.ui.hover.TDLtxHoverProvider;

/**
 * Use this class to register components to be used within the Eclipse IDE.
@@ -13,4 +15,8 @@ public class TDLtxUiModule extends AbstractTDLtxUiModule {
	public TDLtxUiModule(AbstractUIPlugin plugin) {
		super(plugin);
	}
	
	public Class<? extends IEObjectHoverProvider> bindIEObjectHoverProvider() {
		return TDLtxHoverProvider.class;
	}
}
+41 −0
Original line number Diff line number Diff line
package org.etsi.mts.tdl.ui.hover;

import java.util.Collection;
import java.util.stream.Collectors;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature.Setting;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.xtext.ui.editor.hover.html.DefaultEObjectHoverProvider;
import org.etsi.mts.tdl.StructuredDataType;
import org.etsi.mts.tdl.TestDescription;
import org.etsi.mts.tdl.TestObjective;


public class TDLtxHoverProvider extends DefaultEObjectHoverProvider {
	protected String getHoverInfoAsHtml(EObject o) {
		String html = super.getHoverInfoAsHtml(o);
		if (o instanceof TestObjective) {
			//TODO: search within resource set?
			//TODO: basic PoC, elaborate further, e.g. links, other info 
			Collection<Setting> found = EcoreUtil.UsageCrossReferencer.find(o, o.eResource());
			String targets = found.stream().map(e -> ((TestDescription)e.getEObject()).getName()).collect(Collectors.joining("</li><li>"));
			for (Setting f : found) {
				f.getEObject();
			}
			html+="<br/></br>Referenced in: <b><ul><li>"+targets+"</li></ul></b></br</br>";
		}
		if (o instanceof StructuredDataType) {
			String members = ((StructuredDataType) o).allMembers().stream().map(e -> e.getName() + " : "+e.getDataType().getName()).collect(Collectors.joining("</li><li>"));
			html+="<br/></br>Members: <b><ul><li>"+members+"</li></ul></b></br</br>";
		}		
		return html;
	}

	protected String getHoverInfoAsHtml(TestObjective o) {
		String html = super.getHoverInfoAsHtml(o);
		System.out.println(html);
		return html;
	}
 
}
 No newline at end of file