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

+ show nested member completions as separate kind, refine labels decorations and hover, #230, #255

* refactoring
parent 63dc32f5
Loading
Loading
Loading
Loading
+4 −1
Changes for plugins/org.etsi.mts.tdl.tx.ui/src/org/etsi/mts/tdl/ui/contentassist/CyclingContentAssistProcessor.java: 4 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -11,11 +11,12 @@ import org.eclipse.xtext.ui.editor.contentassist.ConfigurableCompletionProposal;
import org.eclipse.xtext.ui.editor.contentassist.XtextContentAssistProcessor;
import org.etsi.mts.tdl.DataInstance;
import org.etsi.mts.tdl.DataType;
import org.etsi.mts.tdl.Parameter;

public class CyclingContentAssistProcessor extends XtextContentAssistProcessor
        implements ICompletionListener {

    private enum Kind { ALL, TYPES, VALUES }
    private enum Kind { ALL, TYPES, VALUES, NESTED }
    private int iteration = 0;
    private ContentAssistant assistant;

@@ -56,6 +57,8 @@ public class CyclingContentAssistProcessor extends XtextContentAssistProcessor
					return Kind.TYPES;	
				} else if (target instanceof DataInstance) {
					return Kind.VALUES;
				} else if (target instanceof Parameter) {
					return Kind.NESTED;
				}
			}
		}
+18 −9
Changes for plugins/org.etsi.mts.tdl.tx.ui/src/org/etsi/mts/tdl/ui/contentassist/TDLtxProposalProvider.java: 18 added lines, 9 removed lines.
Original line number Diff line number Diff line
@@ -405,9 +405,14 @@ public class TDLtxProposalProvider extends AbstractTDLtxProposalProvider {

		for (NamedElement ne : namedElements) {
			boolean accept = false;
			String decoration = "";
			//TODO: priorities
			if (ne instanceof DataInstance && ((type == null) ||((DataInstance)ne).getDataType().conformsTo(type))) {
				accept = true;
				if (((DataInstance)ne).getDataType() != null) {
					String typeName = ((DataInstance)ne).getDataType().getName();
					decoration = " : instance of type "+typeName;
				}
			} else if (ne instanceof DataType && ((type == null) || ((DataType) ne).conformsTo(type))) {
				//accept = true;
				if (ne instanceof SimpleDataType) {
@@ -436,10 +441,10 @@ public class TDLtxProposalProvider extends AbstractTDLtxProposalProvider {
					}
					if (named) {
						//TODO: document and push
						ICompletionProposal proposal = createCompletionProposal(prefix+ne.getName()+usedSuffix, new StyledString(prefix+ne.getName()+usedSuffix).append(" : new instance of type "+signature, StyledString.DECORATIONS_STYLER), getImage(ne), 1100, "", context);
						((ConfigurableCompletionProposal)proposal).setAdditionalProposalInfo(ne);
						((ConfigurableCompletionProposal)proposal).setAdditionalData(TARGET,ne);
						((ConfigurableCompletionProposal)proposal).setHover(getHover());
						ConfigurableCompletionProposal proposal = (ConfigurableCompletionProposal) createCompletionProposal(prefix+ne.getName()+usedSuffix, new StyledString(prefix+ne.getName()+usedSuffix).append(" : new instance of type "+signature, StyledString.DECORATIONS_STYLER), getImage(ne), 1100, "", context);
						proposal.setAdditionalProposalInfo(ne);
						proposal.setAdditionalData(TARGET,ne);
						proposal.setHover(getHover());
						acceptor.accept(proposal);
					}
				}
@@ -455,14 +460,18 @@ public class TDLtxProposalProvider extends AbstractTDLtxProposalProvider {
					.toList();
				//TODO: also consider where dt is used recursively via members / extensions?
				for (StructuredDataInstance sdi : compatibleDataInstances) {
					acceptor.accept(createCompletionProposal(sdi.getName()+"."+ne.getName(), new StyledString(sdi.getName()+"."+ne.getName()).append(" : in "+sdi.getQualifiedName(), StyledString.DECORATIONS_STYLER), getImage(ne), 900, "", context));
					ConfigurableCompletionProposal proposal = (ConfigurableCompletionProposal) createCompletionProposal(sdi.getName()+"."+ne.getName(), new StyledString(sdi.getName()+"."+ne.getName()).append(" : member value in instance "+sdi.getQualifiedName(), StyledString.DECORATIONS_STYLER), getImage(ne), 900, "", context);
					proposal.setAdditionalProposalInfo(ne);
					proposal.setAdditionalData(TARGET,ne);
					proposal.setHover(getHover());
					acceptor.accept(proposal);
				}
			}
			if (accept) {
				ICompletionProposal proposal = createCompletionProposal(ne.getName(), new StyledString(ne.getName()), getImage(ne), 1000, "", context);
				((ConfigurableCompletionProposal)proposal).setAdditionalProposalInfo(ne);
				((ConfigurableCompletionProposal)proposal).setAdditionalData(TARGET,ne);
				((ConfigurableCompletionProposal)proposal).setHover(getHover());
				ConfigurableCompletionProposal proposal = (ConfigurableCompletionProposal) createCompletionProposal(ne.getName(), new StyledString(ne.getName()).append(decoration, StyledString.DECORATIONS_STYLER), getImage(ne), 1000, "", context);
				proposal.setAdditionalProposalInfo(ne);
				proposal.setAdditionalData(TARGET,ne);
				proposal.setHover(getHover());
				acceptor.accept(proposal);
			}
		}