Add live process management commands to vscode
This commit is contained in:
@@ -84,6 +84,7 @@ import org.springframework.ide.vscode.commons.util.CollectionUtil;
|
||||
import org.springframework.ide.vscode.commons.util.text.TextDocument;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableList.Builder;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
@@ -401,10 +402,16 @@ public final class SimpleLanguageServer implements Sts4LanguageServer, LanguageC
|
||||
codeLensOptions.setResolveProvider(hasCodeLensResolveProvider());
|
||||
c.setCodeLensProvider(codeLensOptions );
|
||||
}
|
||||
if (hasExecuteCommandSupport && hasQuickFixes()) {
|
||||
c.setExecuteCommandProvider(new ExecuteCommandOptions(ImmutableList.of(
|
||||
CODE_ACTION_COMMAND_ID
|
||||
)));
|
||||
if (hasExecuteCommandSupport && (
|
||||
hasQuickFixes() ||
|
||||
!commands.isEmpty()
|
||||
)) {
|
||||
ImmutableList.Builder<String> supportedCommands = ImmutableList.builder();
|
||||
if (hasQuickFixes()) {
|
||||
supportedCommands.add(CODE_ACTION_COMMAND_ID);
|
||||
}
|
||||
supportedCommands.addAll(commands.keySet());
|
||||
c.setExecuteCommandProvider(new ExecuteCommandOptions(supportedCommands.build()));
|
||||
}
|
||||
if (hasWorkspaceSymbolHandler()) {
|
||||
c.setWorkspaceSymbolProvider(true);
|
||||
|
||||
@@ -43,4 +43,8 @@ public class LiveProcessCommand {
|
||||
this.action = action;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "LiveProcessCommand [processKey=" + processKey + ", label=" + label + ", action=" + action + "]";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,10 @@ import java.util.Set;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import org.eclipse.lsp4j.ExecuteCommandParams;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessConnectorRemote.RemoteBootAppData;
|
||||
import org.springframework.ide.vscode.commons.languageserver.completion.DocumentEdits;
|
||||
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
@@ -29,6 +32,8 @@ import com.google.gson.JsonObject;
|
||||
*/
|
||||
public class SpringProcessCommandHandler {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(SpringProcessCommandHandler.class);
|
||||
|
||||
private static final String COMMAND_LIST_PROCESSES = "sts/livedata/listProcesses";
|
||||
private static final String COMMAND_CONNECT = "sts/livedata/connect";
|
||||
private static final String COMMAND_REFRESH = "sts/livedata/refresh";
|
||||
@@ -47,19 +52,22 @@ public class SpringProcessCommandHandler {
|
||||
server.onCommand(COMMAND_LIST_PROCESSES, (params) -> {
|
||||
return getProcessCommands();
|
||||
});
|
||||
log.info("Registered command handler: {}",COMMAND_LIST_PROCESSES);
|
||||
|
||||
server.onCommand(COMMAND_CONNECT, (params) -> {
|
||||
return connect(params);
|
||||
});
|
||||
log.info("Registered command handler: {}",COMMAND_CONNECT);
|
||||
|
||||
server.onCommand(COMMAND_REFRESH, (params) -> {
|
||||
return refresh(params);
|
||||
});
|
||||
log.info("Registered command handler: {}",COMMAND_REFRESH);
|
||||
|
||||
server.onCommand(COMMAND_DISCONNECT, (params) -> {
|
||||
return disconnect(params);
|
||||
});
|
||||
|
||||
log.info("Registered command handler: {}",COMMAND_DISCONNECT);
|
||||
}
|
||||
|
||||
private CompletableFuture<Object> connect(ExecuteCommandParams params) {
|
||||
@@ -166,7 +174,7 @@ public class SpringProcessCommandHandler {
|
||||
result.add(command);
|
||||
}
|
||||
}
|
||||
|
||||
log.info("getProcessCommands => {}", result);
|
||||
return CompletableFuture.completedFuture((Object[]) result.toArray(new Object[result.size()]));
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import * as VSCode from 'vscode';
|
||||
import {workspace} from 'vscode';
|
||||
|
||||
import * as commons from '@pivotal-tools/commons-vscode';
|
||||
import * as liveHoverUi from './live-hover-connect-ui';
|
||||
|
||||
import {LanguageClient} from "vscode-languageclient";
|
||||
|
||||
@@ -67,5 +68,8 @@ export function activate(context: VSCode.ExtensionContext): Thenable<LanguageCli
|
||||
highlightCodeLensSettingKey: 'boot-java.highlight-codelens.on'
|
||||
};
|
||||
|
||||
return commons.activate(options, context);
|
||||
return commons.activate(options, context).then(client => {
|
||||
liveHoverUi.activate(client, options, context);
|
||||
return client;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
'use strict';
|
||||
|
||||
import * as VSCode from 'vscode';
|
||||
import { LanguageClient } from "vscode-languageclient";
|
||||
import { ActivatorOptions } from '@pivotal-tools/commons-vscode';
|
||||
import { stringify } from 'querystring';
|
||||
|
||||
interface ProcessCommandInfo {
|
||||
processKey : string;
|
||||
label: string;
|
||||
action: string
|
||||
}
|
||||
|
||||
async function liveHoverConnectHandler() {
|
||||
|
||||
//sts.vscode-spring-boot.codeAction
|
||||
const processData : ProcessCommandInfo[] = await VSCode.commands.executeCommand('sts/livedata/listProcesses');
|
||||
const choiceMap = new Map<string, ProcessCommandInfo>();
|
||||
const choices : string[] = [];
|
||||
processData.forEach(p => {
|
||||
const slash = p.action.lastIndexOf('/');
|
||||
if (slash>=0) {
|
||||
var actionLabel = p.action.substring(slash+1);
|
||||
actionLabel = actionLabel.substring(0, 1).toUpperCase() + actionLabel.substring(1);
|
||||
const choiceLabel = actionLabel + " " + p.label;
|
||||
choiceMap.set(choiceLabel, p);
|
||||
choices.push(choiceLabel);
|
||||
}
|
||||
});
|
||||
if (choices) {
|
||||
const picked = await VSCode.window.showQuickPick(choices);
|
||||
if (picked) {
|
||||
const chosen = choiceMap.get(picked);
|
||||
await VSCode.commands.executeCommand(chosen.action, chosen);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Called when extension is activated */
|
||||
export function activate(
|
||||
client: LanguageClient,
|
||||
options: ActivatorOptions,
|
||||
context: VSCode.ExtensionContext
|
||||
) {
|
||||
context.subscriptions.push(
|
||||
VSCode.commands.registerCommand('vscode-spring-boot.live-hover.connect', liveHoverConnectHandler)
|
||||
);
|
||||
}
|
||||
@@ -64,6 +64,11 @@
|
||||
"configuration": "./properties-support/language-configuration.json"
|
||||
}
|
||||
],
|
||||
"commands": [ {
|
||||
"command": "vscode-spring-boot.live-hover.connect",
|
||||
"title": "Manage Live Spring Boot Process Connections"
|
||||
}
|
||||
],
|
||||
"configuration": {
|
||||
"type": "object",
|
||||
"title": "Boot-Java Configuration",
|
||||
|
||||
Reference in New Issue
Block a user