Basic concourse pipeline editor working

This commit is contained in:
Kris De Volder
2016-12-13 14:14:59 -08:00
parent 8075dc12e0
commit fece70fa8d
92 changed files with 1076 additions and 1054 deletions

View File

@@ -92,7 +92,7 @@ public class BootPropertiesLanguageServer extends SimpleLanguageServer {
public YamlAssistContext getGlobalAssistContext(YamlDocument ydoc) {
IDocument doc = ydoc.getDocument();
FuzzyMap<PropertyInfo> index = indexProvider.getIndex(doc);
return ApplicationYamlAssistContext.global(index, completionFactory, typeUtilProvider.getTypeUtil(doc), relaxedNameConfig);
return ApplicationYamlAssistContext.global(ydoc, index, completionFactory, typeUtilProvider.getTypeUtil(doc), relaxedNameConfig);
}
};

View File

@@ -30,9 +30,9 @@ import org.springframework.ide.vscode.boot.metadata.hints.ValueHintHoverInfo;
import org.springframework.ide.vscode.boot.metadata.types.Type;
import org.springframework.ide.vscode.boot.metadata.types.TypeParser;
import org.springframework.ide.vscode.boot.metadata.types.TypeUtil;
import org.springframework.ide.vscode.boot.metadata.types.TypedProperty;
import org.springframework.ide.vscode.boot.metadata.types.TypeUtil.BeanPropertyNameMode;
import org.springframework.ide.vscode.boot.metadata.types.TypeUtil.EnumCaseMode;
import org.springframework.ide.vscode.boot.metadata.types.TypedProperty;
import org.springframework.ide.vscode.boot.metadata.util.FuzzyMap;
import org.springframework.ide.vscode.boot.metadata.util.FuzzyMap.Match;
import org.springframework.ide.vscode.commons.java.IField;
@@ -88,8 +88,8 @@ public abstract class ApplicationYamlAssistContext extends AbstractYamlAssistCon
public final TypeUtil typeUtil;
public ApplicationYamlAssistContext(int documentSelector, YamlPath contextPath, TypeUtil typeUtil, RelaxedNameConfig conf) {
super(documentSelector, contextPath);
public ApplicationYamlAssistContext(YamlDocument doc, int documentSelector, YamlPath contextPath, TypeUtil typeUtil, RelaxedNameConfig conf) {
super(doc, documentSelector, contextPath);
this.typeUtil = typeUtil;
this.conf = conf;
}
@@ -121,16 +121,16 @@ public abstract class ApplicationYamlAssistContext extends AbstractYamlAssistCon
*/
protected abstract Type getType();
public static ApplicationYamlAssistContext subdocument(int documentSelector, FuzzyMap<PropertyInfo> index, PropertyCompletionFactory completionFactory, TypeUtil typeUtil, RelaxedNameConfig conf) {
return new IndexContext(documentSelector, YamlPath.EMPTY, IndexNavigator.with(index), completionFactory, typeUtil, conf);
public static ApplicationYamlAssistContext subdocument(YamlDocument doc, int documentSelector, FuzzyMap<PropertyInfo> index, PropertyCompletionFactory completionFactory, TypeUtil typeUtil, RelaxedNameConfig conf) {
return new IndexContext(doc, documentSelector, YamlPath.EMPTY, IndexNavigator.with(index), completionFactory, typeUtil, conf);
}
public static YamlAssistContext forPath(YamlPath contextPath, FuzzyMap<PropertyInfo> index, PropertyCompletionFactory completionFactory, TypeUtil typeUtil, RelaxedNameConfig conf) {
public static YamlAssistContext forPath(YamlDocument doc, YamlPath contextPath, FuzzyMap<PropertyInfo> index, PropertyCompletionFactory completionFactory, TypeUtil typeUtil, RelaxedNameConfig conf) {
try {
YamlPathSegment documentSelector = contextPath.getSegment(0);
if (documentSelector!=null) {
contextPath = contextPath.dropFirst(1);
YamlAssistContext context = ApplicationYamlAssistContext.subdocument(documentSelector.toIndex(), index, completionFactory, typeUtil, conf);
YamlAssistContext context = ApplicationYamlAssistContext.subdocument(doc, documentSelector.toIndex(), index, completionFactory, typeUtil, conf);
for (YamlPathSegment s : contextPath.getSegments()) {
if (context==null) return null;
context = context.traverse(s);
@@ -155,7 +155,7 @@ public abstract class ApplicationYamlAssistContext extends AbstractYamlAssistCon
public TypeContext(ApplicationYamlAssistContext parent, YamlPath contextPath, Type type,
PropertyCompletionFactory completionFactory, TypeUtil typeUtil, RelaxedNameConfig conf, HintProvider hints) {
super(parent.documentSelector, contextPath, typeUtil, conf);
super(parent.getDocument(), parent.documentSelector, contextPath, typeUtil, conf);
this.parent = parent;
this.completionFactory = completionFactory;
this.type = type;
@@ -401,9 +401,9 @@ public abstract class ApplicationYamlAssistContext extends AbstractYamlAssistCon
private IndexNavigator indexNav;
PropertyCompletionFactory completionFactory;
public IndexContext(int documentSelector, YamlPath contextPath, IndexNavigator indexNav,
public IndexContext(YamlDocument doc, int documentSelector, YamlPath contextPath, IndexNavigator indexNav,
PropertyCompletionFactory completionFactory, TypeUtil typeUtil, RelaxedNameConfig conf) {
super(documentSelector, contextPath, typeUtil, conf);
super(doc, documentSelector, contextPath, typeUtil, conf);
this.indexNav = indexNav;
this.completionFactory = completionFactory;
}
@@ -479,9 +479,9 @@ public abstract class ApplicationYamlAssistContext extends AbstractYamlAssistCon
}
}
if (subIndex.getExtensionCandidate()!=null) {
return new IndexContext(documentSelector, contextPath.append(s), subIndex, completionFactory, typeUtil, conf);
return new IndexContext(getDocument(), documentSelector, contextPath.append(s), subIndex, completionFactory, typeUtil, conf);
} else if (subIndex.getExactMatch()!=null) {
IndexContext asIndexContext = new IndexContext(documentSelector, contextPath.append(s), subIndex, completionFactory, typeUtil, conf);
IndexContext asIndexContext = new IndexContext(getDocument(), documentSelector, contextPath.append(s), subIndex, completionFactory, typeUtil, conf);
PropertyInfo prop = subIndex.getExactMatch();
return new TypeContext(asIndexContext, contextPath.append(s), TypeParser.parse(prop.getType()), completionFactory, typeUtil, conf, prop.getHints(typeUtil, true));
}
@@ -532,11 +532,16 @@ public abstract class ApplicationYamlAssistContext extends AbstractYamlAssistCon
return null;
}
public static YamlAssistContext global(final FuzzyMap<PropertyInfo> index, final PropertyCompletionFactory completionFactory, final TypeUtil typeUtil, final RelaxedNameConfig conf) {
public static YamlAssistContext global(YamlDocument doc, final FuzzyMap<PropertyInfo> index, final PropertyCompletionFactory completionFactory, final TypeUtil typeUtil, final RelaxedNameConfig conf) {
return new TopLevelAssistContext() {
@Override
protected YamlAssistContext getDocumentContext(int documentSelector) {
return subdocument(documentSelector, index, completionFactory, typeUtil, conf);
return subdocument(doc, documentSelector, index, completionFactory, typeUtil, conf);
}
@Override
public YamlDocument getDocument() {
return doc;
}
};
}