Commit acead9f0 authored by Philip Makedonski's avatar Philip Makedonski
Browse files

+ further refinement to hover, &3

parent 92b2bb7c
Loading
Loading
Loading
Loading
+20 −1
Original line number Original line Diff line number Diff line
@@ -10,6 +10,7 @@ import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature.Setting;
import org.eclipse.emf.ecore.EStructuralFeature.Setting;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.xtext.EcoreUtil2;
import org.eclipse.xtext.ui.editor.hover.html.DefaultEObjectHoverProvider;
import org.eclipse.xtext.ui.editor.hover.html.DefaultEObjectHoverProvider;
import org.etsi.mts.tdl.AnyValue;
import org.etsi.mts.tdl.AnyValue;
import org.etsi.mts.tdl.AnyValueOrOmit;
import org.etsi.mts.tdl.AnyValueOrOmit;
@@ -18,6 +19,7 @@ import org.etsi.mts.tdl.CollectionDataInstance;
import org.etsi.mts.tdl.CollectionDataType;
import org.etsi.mts.tdl.CollectionDataType;
import org.etsi.mts.tdl.DataElementUse;
import org.etsi.mts.tdl.DataElementUse;
import org.etsi.mts.tdl.DataUse;
import org.etsi.mts.tdl.DataUse;
import org.etsi.mts.tdl.Element;
import org.etsi.mts.tdl.Function;
import org.etsi.mts.tdl.Function;
import org.etsi.mts.tdl.LiteralValueUse;
import org.etsi.mts.tdl.LiteralValueUse;
import org.etsi.mts.tdl.Member;
import org.etsi.mts.tdl.Member;
@@ -25,6 +27,7 @@ import org.etsi.mts.tdl.MemberAssignment;
import org.etsi.mts.tdl.MemberReference;
import org.etsi.mts.tdl.MemberReference;
import org.etsi.mts.tdl.Message;
import org.etsi.mts.tdl.Message;
import org.etsi.mts.tdl.NamedElement;
import org.etsi.mts.tdl.NamedElement;
import org.etsi.mts.tdl.PackageableElement;
import org.etsi.mts.tdl.Parameter;
import org.etsi.mts.tdl.Parameter;
import org.etsi.mts.tdl.ParameterBinding;
import org.etsi.mts.tdl.ParameterBinding;
import org.etsi.mts.tdl.SimpleDataInstance;
import org.etsi.mts.tdl.SimpleDataInstance;
@@ -177,6 +180,20 @@ public class TDLtxHoverProvider extends DefaultEObjectHoverProvider {
				} else if (dataElement instanceof Function) {
				} else if (dataElement instanceof Function) {
					content += "-><u><i>"+dataElement.getName()+"</i></u>";
					content += "-><u><i>"+dataElement.getName()+"</i></u>";
				}
				}
			} else if (!u.getArgument().isEmpty()) {
				//structured
				content += getArguments(u);
//				Map<Parameter, DataUse> assigned = Collections.emptyMap();
//				Map<Parameter, DataUse> bound = getBound(u);
//				content += "<ul>"+getMembersWithOverrides(assigned, bound, (StructuredDataType) u.resolveDataType())+"</ul>";
			} else if (!((DataElementUse) u).getItem().isEmpty()) {
				//collection
				EList<DataUse> itemList = ((DataElementUse) u).getItem();
				String items = "";
				for (var iu : itemList) {
					items += "<li>("+(u.resolveDataType().getName())+")"+getNestedListOfMembersWithValues(iu)+"</li>"; 
				}
				content += "<ol>"+items+"</ol>";
			} else {
			} else {
				content += getArguments(u);
				content += getArguments(u);
			}
			}
@@ -210,7 +227,9 @@ public class TDLtxHoverProvider extends DefaultEObjectHoverProvider {
	
	
	private Map<Parameter, DataUse> getBound(DataUse u) {
	private Map<Parameter, DataUse> getBound(DataUse u) {
		Map<Parameter, DataUse> bound = u.getArgument()
		Map<Parameter, DataUse> bound = u.getArgument()
				.stream().collect(Collectors.toMap(ParameterBinding::getParameter, ParameterBinding::getDataUse));
				.stream()
				.filter(e->e.getReduction().isEmpty())
				.collect(Collectors.toMap(ParameterBinding::getParameter, ParameterBinding::getDataUse));
		return bound;
		return bound;
	}
	}