1 /*
2  * PanmirrorXRefServer.java
3  *
4  * Copyright (C) 2021 by RStudio, PBC
5  *
6  * Unless you have received this program directly from RStudio pursuant
7  * to the terms of a commercial license agreement with RStudio, then
8  * this program is licensed to you under the terms of version 3 of the
9  * GNU Affero General Public License. This program is distributed WITHOUT
10  * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT,
11  * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the
12  * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details.
13  *
14  */
15 
16 
17 package org.rstudio.studio.client.panmirror.server;
18 
19 import org.rstudio.core.client.promise.PromiseServerRequestCallback;
20 import org.rstudio.studio.client.RStudioGinjector;
21 
22 import com.google.gwt.core.client.JavaScriptObject;
23 import com.google.inject.Inject;
24 
25 import elemental2.promise.Promise;
26 import elemental2.promise.Promise.PromiseExecutorCallbackFn.RejectCallbackFn;
27 import elemental2.promise.Promise.PromiseExecutorCallbackFn.ResolveCallbackFn;
28 import jsinterop.annotations.JsType;
29 
30 @JsType
31 public class PanmirrorXRefServer
32 {
PanmirrorXRefServer()33    public PanmirrorXRefServer() {
34       RStudioGinjector.INSTANCE.injectMembers(this);
35    }
36 
37    @Inject
initialize(PanmirrorXRefServerOperations server)38    void initialize(PanmirrorXRefServerOperations server)
39    {
40       server_ = server;
41    }
42 
indexForFile(String file)43    public Promise<JavaScriptObject> indexForFile(String file)
44    {
45       return new Promise<>((ResolveCallbackFn<JavaScriptObject> resolve, RejectCallbackFn reject) -> {
46          server_.xrefIndexForFile(
47             file,
48             new PromiseServerRequestCallback<>(resolve, reject)
49          );
50       });
51    }
52 
xrefForId(String file, String id)53    public Promise<JavaScriptObject> xrefForId(String file, String id)
54    {
55       return new Promise<>((ResolveCallbackFn<JavaScriptObject> resolve, RejectCallbackFn reject) -> {
56          server_.xrefForId(
57             file,
58             id,
59             new PromiseServerRequestCallback<>(resolve, reject)
60          );
61       });
62    }
63 
64    public Promise<JavaScriptObject> quartoIndexForFile(String file)
65    {
66       return new Promise<>((ResolveCallbackFn<JavaScriptObject> resolve, RejectCallbackFn reject) -> {
67          server_.quartoXrefIndexForFile(
68             file,
69             new PromiseServerRequestCallback<>(resolve, reject)
70          );
71       });
72    }
73 
74    public Promise<JavaScriptObject> quartoXrefForId(String file, String id)
75    {
76       return new Promise<>((ResolveCallbackFn<JavaScriptObject> resolve, RejectCallbackFn reject) -> {
77          server_.quartoXrefForId(
78             file,
79             id,
80             new PromiseServerRequestCallback<>(resolve, reject)
81          );
82       });
83    }
84 
85 
86    private PanmirrorXRefServerOperations server_;
87 }
88