下面列出了怎么用org.eclipse.lsp4j.ShowMessageRequestParams的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public CompletableFuture<MessageActionItem> showMessageRequest(ShowMessageRequestParams showMessageRequestParams) {
List<MessageActionItem> actions = showMessageRequestParams.getActions();
String title = "Language Server message";
String message = showMessageRequestParams.getMessage();
MessageType msgType = showMessageRequestParams.getType();
Icon icon;
if (msgType == MessageType.Error) {
icon = UIUtil.getErrorIcon();
} else if (msgType == MessageType.Warning) {
icon = UIUtil.getWarningIcon();
} else if (msgType == MessageType.Info) {
icon = UIUtil.getInformationIcon();
} else if (msgType == MessageType.Log) {
icon = UIUtil.getInformationIcon();
} else {
icon = null;
LOG.warn("No message type for " + message);
}
List<String> titles = new ArrayList<>();
for (MessageActionItem item : actions) {
titles.add(item.getTitle());
}
FutureTask<Integer> task = new FutureTask<>(
() -> Messages.showDialog(message, title, (String[]) titles.toArray(), 0, icon));
ApplicationManager.getApplication().invokeAndWait(task);
int exitCode = 0;
try {
exitCode = task.get();
} catch (InterruptedException | ExecutionException e) {
LOG.warn(e.getMessage());
}
return CompletableFuture.completedFuture(new MessageActionItem(actions.get(exitCode).getTitle()));
}
@BeforeEach
void setup() {
workspaceRoot = Paths.get(System.getProperty("user.dir")).resolve(PATH_WORKSPACE);
srcRoot = workspaceRoot.resolve(PATH_SRC);
if (!Files.exists(srcRoot)) {
srcRoot.toFile().mkdirs();
}
services = new GroovyServices(new CompilationUnitFactory());
services.setWorkspaceRoot(workspaceRoot);
services.connect(new LanguageClient() {
@Override
public void telemetryEvent(Object object) {
}
@Override
public CompletableFuture<MessageActionItem> showMessageRequest(ShowMessageRequestParams requestParams) {
return null;
}
@Override
public void showMessage(MessageParams messageParams) {
}
@Override
public void publishDiagnostics(PublishDiagnosticsParams diagnostics) {
}
@Override
public void logMessage(MessageParams message) {
}
});
}
@BeforeEach
void setup() {
workspaceRoot = Paths.get(System.getProperty("user.dir")).resolve(PATH_WORKSPACE);
srcRoot = workspaceRoot.resolve(PATH_SRC);
if (!Files.exists(srcRoot)) {
srcRoot.toFile().mkdirs();
}
services = new GroovyServices(new CompilationUnitFactory());
services.setWorkspaceRoot(workspaceRoot);
services.connect(new LanguageClient() {
@Override
public void telemetryEvent(Object object) {
}
@Override
public CompletableFuture<MessageActionItem> showMessageRequest(ShowMessageRequestParams requestParams) {
return null;
}
@Override
public void showMessage(MessageParams messageParams) {
}
@Override
public void publishDiagnostics(PublishDiagnosticsParams diagnostics) {
}
@Override
public void logMessage(MessageParams message) {
}
});
}
@BeforeEach
void setup() {
workspaceRoot = Paths.get(System.getProperty("user.dir")).resolve(PATH_WORKSPACE);
srcRoot = workspaceRoot.resolve(PATH_SRC);
if (!Files.exists(srcRoot)) {
srcRoot.toFile().mkdirs();
}
services = new GroovyServices(new CompilationUnitFactory());
services.setWorkspaceRoot(workspaceRoot);
services.connect(new LanguageClient() {
@Override
public void telemetryEvent(Object object) {
}
@Override
public CompletableFuture<MessageActionItem> showMessageRequest(ShowMessageRequestParams requestParams) {
return null;
}
@Override
public void showMessage(MessageParams messageParams) {
}
@Override
public void publishDiagnostics(PublishDiagnosticsParams diagnostics) {
}
@Override
public void logMessage(MessageParams message) {
}
});
}
@BeforeEach
void setup() {
workspaceRoot = Paths.get(System.getProperty("user.dir")).resolve(PATH_WORKSPACE);
srcRoot = workspaceRoot.resolve(PATH_SRC);
if (!Files.exists(srcRoot)) {
srcRoot.toFile().mkdirs();
}
services = new GroovyServices(new CompilationUnitFactory());
services.setWorkspaceRoot(workspaceRoot);
services.connect(new LanguageClient() {
@Override
public void telemetryEvent(Object object) {
}
@Override
public CompletableFuture<MessageActionItem> showMessageRequest(ShowMessageRequestParams requestParams) {
return null;
}
@Override
public void showMessage(MessageParams messageParams) {
}
@Override
public void publishDiagnostics(PublishDiagnosticsParams diagnostics) {
}
@Override
public void logMessage(MessageParams message) {
}
});
}
public static CompletableFuture<MessageActionItem> showMessageRequest(LanguageServerWrapper wrapper, ShowMessageRequestParams params) {
String options[] = params.getActions().stream().map(MessageActionItem::getTitle).toArray(String[]::new);
CompletableFuture<MessageActionItem> future = new CompletableFuture<>();
ApplicationManager.getApplication().invokeLater(() -> {
MessageActionItem result = new MessageActionItem();
int dialogResult = Messages.showIdeaMessageDialog(null, params.getMessage(), wrapper.serverDefinition.label, options, 0, Messages.getInformationIcon(), null);
if (dialogResult != -1) {
result.setTitle(options[dialogResult]);
}
future.complete(result);
});
return future;
}
private static XMLLanguageServer createServer(List<PublishDiagnosticsParams> actualDiagnostics) {
XMLLanguageServer languageServer = new XMLLanguageServer();
XMLLanguageClientAPI client = new XMLLanguageClientAPI() {
@Override
public CompletableFuture<MessageActionItem> showMessageRequest(ShowMessageRequestParams requestParams) {
return null;
}
@Override
public void showMessage(MessageParams messageParams) {
}
@Override
public void publishDiagnostics(PublishDiagnosticsParams diagnostics) {
actualDiagnostics.add(diagnostics);
}
@Override
public void logMessage(MessageParams message) {
}
@Override
public void telemetryEvent(Object object) {
}
@Override
public void actionableNotification(ActionableNotification notification) {
throw new UnsupportedOperationException();
}
};
languageServer.setClient(client);
return languageServer;
}
@Override
public final CompletableFuture<MessageActionItem> showMessageRequest(ShowMessageRequestParams requestParams) {
return ServerMessageHandler.showMessageRequest(wrapper, requestParams);
}
@Override
public CompletableFuture<MessageActionItem> showMessageRequest(ShowMessageRequestParams requestParams) {
return null;
}
@Override
public CompletableFuture<MessageActionItem> showMessageRequest(ShowMessageRequestParams requestParams) {
return null;
}
@Override
public CompletableFuture<MessageActionItem> showMessageRequest(ShowMessageRequestParams requestParams) {
return null;
}
@Override
public CompletableFuture<MessageActionItem> showMessageRequest(ShowMessageRequestParams requestParams) {
// ignored by default
return null;
}
@Override
public CompletableFuture<MessageActionItem> showMessageRequest(ShowMessageRequestParams arg0) {
System.err.println("showMessageRequest");
return null; //???
}
public CompletableFuture<MessageActionItem> showMessageRequest(ShowMessageRequestParams requestParams) {
return noImpl3.showMessageRequest(requestParams);
}
@Override
public CompletableFuture<MessageActionItem> showMessageRequest(ShowMessageRequestParams requestParams) {
throw new UnsupportedOperationException();
}
/**
* Sends the message to the client, to be displayed on a UI element.
* Waits for an answer from the user and returns the selected
* action.
*
* @param type
* @param msg
* @return
*/
public MessageActionItem showNotificationMessageRequest(MessageType type, String msg, List<MessageActionItem> actions){
ShowMessageRequestParams $ = new ShowMessageRequestParams();
$.setMessage(msg);
$.setType(type);
$.setActions(actions);
return client.showMessageRequest($).join();
}
/**
* The show message request is sent from a server to a client to ask the
* client to display a particular message in the user interface. In addition
* to the show message notification the request allows to pass actions and
* to wait for an answer from the client.
*/
@JsonRequest("window/showMessageRequest")
CompletableFuture<MessageActionItem> showMessageRequest(ShowMessageRequestParams requestParams);