From 904468c632094689ea32bf6d0e56493b0d9d1026 Mon Sep 17 00:00:00 2001 From: nsingh Date: Fri, 24 Aug 2018 09:02:04 +0200 Subject: [PATCH] Some changes to RM code lenses Added command for direct navigation to URL in vscode editor. --- .../RequestMappingHoverProvider.java | 29 +++++++++---------- .../vscode-spring-boot/lib/Main.ts | 8 ++++- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/requestmapping/RequestMappingHoverProvider.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/requestmapping/RequestMappingHoverProvider.java index 41ea8d7a8..a88f72e64 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/requestmapping/RequestMappingHoverProvider.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/requestmapping/RequestMappingHoverProvider.java @@ -84,15 +84,15 @@ public class RequestMappingHoverProvider implements HoverProvider { Collection lenses = new ArrayList<>(); if (urls != null) { - int limit = urls.size() > CODE_LENS_LIMIT ? CODE_LENS_LIMIT : urls.size(); - - for (int i = 0; i < limit; i++) { - CodeLens codeLens = createCodeLensForRequestMapping(range, urls.get(i)); - lenses.add(codeLens); - } - - if (urls.size() > CODE_LENS_LIMIT) { - CodeLens codeLens = createCodeLensForRemaining(range, urls.size() - CODE_LENS_LIMIT); + if (urls.size() <= CODE_LENS_LIMIT) { + // Show a code lens for each URL if within the limit + for (String url : urls) { + CodeLens codeLens = createCodeLensForRequestMapping(range, url); + lenses.add(codeLens); + } + } else { + // If number of URLs exceed the limit, just show one code lens that shows all URLs in a hover + CodeLens codeLens = createCodeLensForHover(range, urls.size()); lenses.add(codeLens); } } @@ -246,11 +246,8 @@ public class RequestMappingHoverProvider implements HoverProvider { codeLens.setData(content); cmd.setTitle(content); -// cmd.setCommand("editor.action.openLink"); - // Show hover for now, as it contains a link. Ideally the command to set is a vscode - // one that jumps to URL directly - cmd.setCommand("org.springframework.showHoverAtPosition"); - cmd.setArguments(ImmutableList.of(range.getStart())); + cmd.setCommand("springboot.open.url"); + cmd.setArguments(ImmutableList.of(content)); } codeLens.setCommand(cmd); @@ -258,12 +255,12 @@ public class RequestMappingHoverProvider implements HoverProvider { return codeLens; } - private CodeLens createCodeLensForRemaining(Range range, int remaining) { + private CodeLens createCodeLensForHover(Range range, int total) { CodeLens codeLens = new CodeLens(); codeLens.setRange(range); Command cmd = new Command(); - cmd.setTitle(remaining + " more..."); + cmd.setTitle(total + " mappings from running apps..."); cmd.setCommand("org.springframework.showHoverAtPosition"); cmd.setArguments(ImmutableList.of(range.getStart())); diff --git a/vscode-extensions/vscode-spring-boot/lib/Main.ts b/vscode-extensions/vscode-spring-boot/lib/Main.ts index 2077a1833..b4218ef17 100644 --- a/vscode-extensions/vscode-spring-boot/lib/Main.ts +++ b/vscode-extensions/vscode-spring-boot/lib/Main.ts @@ -16,7 +16,7 @@ const JAVA_LANGUAGE_ID = "java"; export function activate(context: VSCode.ExtensionContext): Thenable { // registerPipelineGenerator(context); - + registerOpenUrl(context); let options : commons.ActivatorOptions = { DEBUG: false, CONNECT_TO_LS: false, @@ -85,3 +85,9 @@ function registerPipelineGenerator(context: VSCode.ExtensionContext) { })); } +function registerOpenUrl(context: VSCode.ExtensionContext) { + context.subscriptions.push(VSCode.commands.registerCommand('springboot.open.url', (url) => { + VSCode.commands.executeCommand('vscode.open', VSCode.Uri.parse(url)) + })); +} +