Skip to content

Commit 455bb22

Browse files
Implement first time installation Wizard #369
1 parent 249701f commit 455bb22

36 files changed

+657
-89
lines changed

ide-common/src/main/java/org/digma/intellij/plugin/settings/SettingsState.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public class SettingsState implements PersistentStateComponent<SettingsState>, D
4141
public boolean firstTimeInsightReceived;
4242
@Nullable
4343
public String posthogToken;
44+
public boolean alreadyPassedTheInstallationWizard;
4445

4546
private final List<SettingsChangeListener> listeners = new ArrayList<>();
4647

ide-common/src/main/java/org/digma/intellij/plugin/ui/ToolWindowShower.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class ToolWindowShower {
1515
private Content insightsTab;
1616

1717

18-
public static ToolWindowShower getInstance(@NotNull Project project){
18+
public static ToolWindowShower getInstance(@NotNull Project project) {
1919
return project.getService(ToolWindowShower.class);
2020
}
2121

@@ -37,26 +37,26 @@ public void setInsightsTab(Content insightsTab) {
3737
}
3838

3939

40-
public void showToolWindow(){
40+
public void showToolWindow() {
4141

4242
Log.log(LOGGER::debug, "showToolWindow invoked");
4343

44-
if (toolWindow != null){
44+
if (toolWindow != null) {
4545
Log.log(LOGGER::debug, "Got reference to tool window, showing..");
4646
show(toolWindow);
4747
if (insightsTab != null) {
4848
toolWindow.getContentManager().setSelectedContent(insightsTab);
4949
}
50-
}else{
50+
} else {
5151
Log.log(LOGGER::debug, "Don't have reference to tool window, showing with ToolWindowManager..");
5252
ToolWindow tw = ToolWindowManager.getInstance(project).getToolWindow(PluginId.TOOL_WINDOW_ID);
53-
if (tw != null){
53+
if (tw != null) {
5454
Log.log(LOGGER::debug, "Got tool window from ToolWindowManager");
5555
show(tw);
5656
if (insightsTab != null) {
5757
tw.getContentManager().setSelectedContent(insightsTab);
5858
}
59-
}else{
59+
} else {
6060
Log.log(LOGGER::debug, "Could not find tool window");
6161
}
6262
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.digma.intellij.plugin.model.rest.installationwizard
2+
3+
import com.fasterxml.jackson.annotation.JsonCreator
4+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
5+
import java.beans.ConstructorProperties
6+
7+
data class OpenInBrowserRequest
8+
@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
9+
@JsonIgnoreProperties(ignoreUnknown = true)
10+
@ConstructorProperties("action", "payload")
11+
constructor(
12+
val action: String,
13+
val payload: OpenInBrowserRequestPayload?
14+
)
15+
16+
data class OpenInBrowserRequestPayload
17+
@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
18+
@JsonIgnoreProperties(ignoreUnknown = true)
19+
@ConstructorProperties("url")
20+
constructor(
21+
val url: String
22+
)

src/main/java/org/digma/intellij/plugin/toolwindow/recentactivity/CustomResourceHandler.kt renamed to src/main/java/org/digma/intellij/plugin/toolwindow/common/CustomResourceHandler.kt

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.digma.intellij.plugin.toolwindow.recentactivity
1+
package org.digma.intellij.plugin.toolwindow.common
22

33
import freemarker.template.Configuration
44
import org.cef.callback.CefCallback
@@ -15,22 +15,28 @@ import java.io.StringWriter
1515
import java.net.URLConnection
1616

1717
const val INDEX_TEMPLATE_FILE: String = "indextemplate.ftl"
18-
const val BASE_PACKAGE_PATH: String = "/webview"
18+
const val BASE_PACKAGE_PATH: String = "/webview/"
1919
const val ENV_VARIABLE_THEME: String = "theme"
20+
const val COMMON_FILES_FOLDER_NAME: String = "common"
2021

21-
class CustomResourceHandler : CefResourceHandler {
22+
class CustomResourceHandler(private var resourceFolderName: String) : CefResourceHandler {
2223
private var state: ResourceHandlerState = ClosedConnection
2324
override fun processRequest(
2425
cefRequest: CefRequest,
2526
cefCallback: CefCallback
2627
): Boolean {
2728
val processedUrl = cefRequest.url
2829
return if (processedUrl != null) {
29-
if (processedUrl == "http://myapp/index.html") {
30-
val html = loadFreemarkerTemplate()
30+
if (processedUrl.equals("http://$resourceFolderName/index.html", true)) {
31+
val html = loadFreemarkerTemplate(resourceFolderName)
3132
state = StringData(html)
3233
} else {
33-
val pathToResource = processedUrl.replace("http://myapp", "webview/")
34+
val pathToResource: String =
35+
if (processedUrl.contains("fonts") || processedUrl.contains("images")) {
36+
processedUrl.replace("http://$resourceFolderName", "webview/$COMMON_FILES_FOLDER_NAME")
37+
} else {
38+
processedUrl.replace("http://$resourceFolderName", "webview/$resourceFolderName")
39+
}
3440
val newUrl = javaClass.classLoader.getResource(pathToResource)
3541
if (newUrl != null) {
3642
state = OpenedConnection(newUrl.openConnection())
@@ -166,9 +172,9 @@ data class StringData(val data: String) : ResourceHandlerState {
166172
}
167173
}
168174

169-
private fun loadFreemarkerTemplate(): String {
175+
private fun loadFreemarkerTemplate(resourceFolderName: String): String {
170176
val cfg = Configuration(Configuration.VERSION_2_3_30)
171-
cfg.setClassForTemplateLoading(CustomResourceHandler::class.java, BASE_PACKAGE_PATH)
177+
cfg.setClassForTemplateLoading(CustomResourceHandler::class.java, BASE_PACKAGE_PATH + resourceFolderName)
172178
val template = cfg.getTemplate(INDEX_TEMPLATE_FILE)
173179
val data = mapOf(ENV_VARIABLE_THEME to ThemeUtil.getCurrentThemeName())
174180
val writer = StringWriter()

src/main/java/org/digma/intellij/plugin/toolwindow/recentactivity/CustomResourceHandlerUtil.kt renamed to src/main/java/org/digma/intellij/plugin/toolwindow/common/CustomResourceHandlerUtil.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.digma.intellij.plugin.toolwindow.recentactivity
1+
package org.digma.intellij.plugin.toolwindow.common
22

33
import org.cef.callback.CefCallback
44
import org.cef.misc.IntRef

src/main/java/org/digma/intellij/plugin/toolwindow/recentactivity/CustomSchemeHandlerFactory.kt renamed to src/main/java/org/digma/intellij/plugin/toolwindow/common/CustomSchemeHandlerFactory.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1-
package org.digma.intellij.plugin.toolwindow.recentactivity
1+
package org.digma.intellij.plugin.toolwindow.common
22

33
import org.cef.browser.CefBrowser
44
import org.cef.browser.CefFrame
55
import org.cef.callback.CefSchemeHandlerFactory
66
import org.cef.handler.CefResourceHandler
77
import org.cef.network.CefRequest
88

9-
class CustomSchemeHandlerFactory: CefSchemeHandlerFactory {
9+
class CustomSchemeHandlerFactory(private var resourceFolderName: String) : CefSchemeHandlerFactory {
10+
1011
override fun create(browser: CefBrowser?, frame: CefFrame?, schemeName: String?, request: CefRequest?): CefResourceHandler {
11-
return CustomResourceHandler()
12+
return CustomResourceHandler(resourceFolderName)
1213
}
1314
}

src/main/java/org/digma/intellij/plugin/toolwindow/recentactivity/CustomViewerWindow.kt renamed to src/main/java/org/digma/intellij/plugin/toolwindow/common/CustomViewerWindow.kt

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
package org.digma.intellij.plugin.toolwindow.recentactivity
1+
package org.digma.intellij.plugin.toolwindow.common
22

33
import com.intellij.openapi.project.Project
44
import com.intellij.openapi.util.Disposer
55
import com.intellij.ui.jcef.JBCefBrowser
66
import com.intellij.ui.jcef.JBCefBrowserBuilder
77
import org.cef.CefApp
88

9-
class CustomViewerWindow(project: Project) {
9+
class CustomViewerWindow(project: Project, private var resourceFolderName: String) {
1010
private val webView: JBCefBrowser = getBrowser(project)
1111
private fun getBrowser(project: Project): JBCefBrowser {
1212
val jbCefBrowserBuilder = JBCefBrowserBuilder()
@@ -16,20 +16,19 @@ class CustomViewerWindow(project: Project) {
1616
val jbCefBrowser = jbCefBrowserBuilder.build()
1717

1818
registerAppSchemeHandler()
19-
jbCefBrowser.loadURL("http://myapp/index.html")
19+
jbCefBrowser.loadURL("http://$resourceFolderName/index.html")
2020
Disposer.register(project, jbCefBrowser)
2121
return jbCefBrowser
2222
}
2323

2424
fun getWebView(): JBCefBrowser = webView
2525

2626
private fun registerAppSchemeHandler(): Boolean {
27-
return CefApp
28-
.getInstance()
27+
return CefApp.getInstance()
2928
.registerSchemeHandlerFactory(
3029
"http",
31-
"myapp",
32-
CustomSchemeHandlerFactory()
30+
resourceFolderName,
31+
CustomSchemeHandlerFactory(resourceFolderName)
3332
)
3433
}
35-
}
34+
}

src/main/java/org/digma/intellij/plugin/toolwindow/recentactivity/ThemeChangeListener.java renamed to src/main/java/org/digma/intellij/plugin/toolwindow/common/ThemeChangeListener.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
1-
package org.digma.intellij.plugin.toolwindow.recentactivity;
1+
package org.digma.intellij.plugin.toolwindow.common;
22

33
import com.intellij.openapi.diagnostic.Logger;
44
import com.intellij.ui.jcef.JBCefBrowser;
55
import org.apache.commons.lang3.StringUtils;
66
import org.digma.intellij.plugin.log.Log;
7+
import org.digma.intellij.plugin.toolwindow.recentactivity.JBCefBrowserUtil;
78

89
import java.beans.PropertyChangeEvent;
910
import java.beans.PropertyChangeListener;
1011

11-
import static org.digma.intellij.plugin.toolwindow.recentactivity.ToolWindowUtil.RECENT_ACTIVITY_SET_UI_THEME;
12-
import static org.digma.intellij.plugin.toolwindow.recentactivity.ToolWindowUtil.REQUEST_MESSAGE_TYPE;
12+
import static org.digma.intellij.plugin.toolwindow.common.ToolWindowUtil.RECENT_ACTIVITY_SET_UI_THEME;
13+
import static org.digma.intellij.plugin.toolwindow.common.ToolWindowUtil.REQUEST_MESSAGE_TYPE;
1314

1415
public class ThemeChangeListener implements PropertyChangeListener {
1516
private static final Logger LOGGER = Logger.getInstance(ThemeChangeListener.class);

src/main/java/org/digma/intellij/plugin/toolwindow/recentactivity/ThemeUtil.java renamed to src/main/java/org/digma/intellij/plugin/toolwindow/common/ThemeUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.digma.intellij.plugin.toolwindow.recentactivity;
1+
package org.digma.intellij.plugin.toolwindow.common;
22

33
import javax.swing.*;
44
import java.awt.*;
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.digma.intellij.plugin.toolwindow.common;
2+
3+
import com.google.gson.Gson;
4+
import com.google.gson.JsonObject;
5+
import com.google.gson.JsonParser;
6+
7+
public class ToolWindowUtil {
8+
public static final String RECENT_ACTIVITY_SET_DATA = "RECENT_ACTIVITY/SET_DATA";
9+
public static final String RECENT_ACTIVITY_SET_UI_THEME = "GLOBAL/SET_THEME";
10+
public static final String RECENT_ACTIVITY_GET_DATA = "RECENT_ACTIVITY/GET_DATA";
11+
public static final String RECENT_ACTIVITY_GO_TO_SPAN = "RECENT_ACTIVITY/GO_TO_SPAN";
12+
public static final String RECENT_ACTIVITY_GO_TO_TRACE = "RECENT_ACTIVITY/GO_TO_TRACE";
13+
public static final String REQUEST_MESSAGE_TYPE = "digma";
14+
public static final String BOTTOM_TAB_NAME = "Code Analytics";
15+
public static final String INSTALLATION_WIZARD_FINISH = "INSTALLATION_WIZARD/FINISH";
16+
public static final String OPEN_URL_IN_DEFAULT_BROWSER = "GLOBAL/OPEN_URL_IN_DEFAULT_BROWSER";
17+
public static final String INSTALLATION_WIZARD_CHECK_CONNECTION = "INSTALLATION_WIZARD/CHECK_CONNECTION";
18+
public static final String INSTALLATION_WIZARD_SET_CHECK_CONNECTION = "INSTALLATION_WIZARD/SET_CONNECTION_CHECK_RESULT";
19+
20+
public static <T> T parseJsonToObject(String jsonString, Class<T> jcefMessageRequestClass) {
21+
JsonObject object = JsonParser.parseString(jsonString).getAsJsonObject();
22+
return new Gson().fromJson(object, jcefMessageRequestClass);
23+
}
24+
}

0 commit comments

Comments
 (0)