From 929495cbcf06d81c36dad6a95140b78bae89e1ff Mon Sep 17 00:00:00 2001 From: BoykoAlex Date: Mon, 14 Nov 2016 15:53:20 -0500 Subject: [PATCH] Hook hover handler to document service --- .../commons/languageserver/util/HoverHandler.java | 11 +++++++++++ .../util/SimpleTextDocumentService.java | 13 ++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 vscode-extensions/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/HoverHandler.java diff --git a/vscode-extensions/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/HoverHandler.java b/vscode-extensions/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/HoverHandler.java new file mode 100644 index 000000000..189b0ee23 --- /dev/null +++ b/vscode-extensions/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/HoverHandler.java @@ -0,0 +1,11 @@ +package org.springframework.ide.vscode.commons.languageserver.util; + +import java.util.concurrent.CompletableFuture; + +import org.eclipse.lsp4j.Hover; +import org.eclipse.lsp4j.TextDocumentPositionParams; + +@FunctionalInterface +public interface HoverHandler { + CompletableFuture handle(TextDocumentPositionParams params); +} diff --git a/vscode-extensions/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleTextDocumentService.java b/vscode-extensions/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleTextDocumentService.java index f1c2839c3..72980cb60 100644 --- a/vscode-extensions/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleTextDocumentService.java +++ b/vscode-extensions/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/util/SimpleTextDocumentService.java @@ -53,12 +53,19 @@ public class SimpleTextDocumentService implements TextDocumentService { private ListenerList documentChangeListeners = new ListenerList<>(); private CompletionHandler completionHandler = null; private CompletionResolveHandler completionResolveHandler = null; + private HoverHandler hoverHandler = null; public SimpleTextDocumentService(SimpleLanguageServer server) { this.server = server; } - public synchronized void onCompletion(CompletionHandler h) { + + public synchronized void onHover(HoverHandler h) { + Assert.isNull("A hover handler is already set, multiple handlers not supported yet", hoverHandler); + this.hoverHandler = h; + } + + public synchronized void onCompletion(CompletionHandler h) { Assert.isNull("A completion handler is already set, multiple handlers not supported yet", completionHandler); this.completionHandler = h; } @@ -181,6 +188,10 @@ public class SimpleTextDocumentService implements TextDocumentService { @Override public CompletableFuture hover(TextDocumentPositionParams position) { + HoverHandler h = hoverHandler; + if (h!=null) { + return hoverHandler.handle(position); + } return Futures.of(null); }